Seorang siswa hanya bertanya apa yang bisa menjadi kelemahan memiliki titik ( .
) atas nama pengguna. Sebagai contoh:john.doe
Bagaimana ini akan mempengaruhi sistem atau aplikasi apa pun dalam hal ini?
Seorang siswa hanya bertanya apa yang bisa menjadi kelemahan memiliki titik ( .
) atas nama pengguna. Sebagai contoh:john.doe
Bagaimana ini akan mempengaruhi sistem atau aplikasi apa pun dalam hal ini?
Jawaban:
POSIX menyatakan ini tentang nama pengguna:
[...] Untuk menjadi portabel di seluruh sistem yang sesuai dengan IEEE Std 1003.1-2001, nilainya terdiri dari karakter dari set karakter nama file portabel. Tanda hubung tidak boleh digunakan sebagai karakter pertama dari nama pengguna portabel.
... di mana set karakter nama file portabel adalah:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -
Juga, halaman manual untuk /etc/adduser.conf
file menyatakan:
VALID NAMES
adduser and addgroup enforce conformity to IEEE Std 1003.1-2001,
which allows only the following characters to appear in group
and user names: letters, digits, underscores, periods, at signs
(@) and dashes. The name may not start with a dash. The "$" sign
is allowed at the end of usernames (to conform to samba).
An additional check can be adjusted via the configuration
parameter NAME_REGEX to enforce a local policy.
Sementara kedua spesifikasi tampaknya termasuk titik, Ubuntu (setidaknya pada 13,04 saya) tampaknya tidak mengizinkannya:
⊳ sudo adduser as.df
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX[_SYSTEM] configuration variable. Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
Default NAME_REGEX
di Ubuntu adalah (dari /etc/adduser.conf
manual):
^[a-z][-a-z0-9]*$
_
, @
atau .
.Kesimpulannya, sebuah titik .
dapat digunakan untuk nama pengguna Ubuntu, yang NAME_REGEX
harus diubah adalah /etc/adduser.conf
. Karena sesuai dengan POSIX, seharusnya tidak ada masalah dengan memiliki .
nama pengguna di dalam dengan program yang sesuai dengan POSIX.
Jalankan perintah ini di terminal:
sudo nano /etc/adduser.conf
Temukan baris ini (dekat akhir file)
#NAME_REGEX="^[a-z][-a-z0-9]*$"
dan ganti dengan
NAME_REGEX='^[a-z][-.a-z0-9]*$'
Perhatikan bahwa -
harus tetap menjadi karakter pertama dalam ekspresi braket [...]
, jika tidak maka akan dianggap sebagai menentukan rentang a-z
.
Tekan Ctrl+ X, lalu Y, lalu Enter.
Referensi:
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
masuk /etc/adduser.conf
.
useradd
sebagai gantinya: sudo useradd -m my.user
. Itu yang kami lakukan di Userify dan juga lintas platform.
Aplikasi yang bertuliskan nama pengguna mungkin menggunakan regex yang mengasumsikan nama pengguna Anda mengikuti aturan dan karenanya tidak dapat menangani nama pengguna Anda.
Marc Haber menjelaskan kemungkinan penurunan dalam bug Debian # 604242 (Izinkan titik dalam nama pengguna secara default):
Memiliki titik-titik dalam nama pengguna menciptakan beberapa masalah dengan skrip menggunakan
chown
, yang masih menerima titik-titik sebagai pemisah antara nama pengguna dan nama grup. Jikachown
masih menerima titik, akan ada skrip yang menggunakan notasi ini, yang akan pecah jika nama pengguna berisi titik.Saya akan merekomendasikan menjaga default saat ini (yang dapat ditimpa oleh konfigurasi lokal) sampai
chown
berhenti menerima titik sebagai pemisah.
Dan chown
masih menerima titik sebagai pemisah, meskipun tidak didokumentasikan lagi. Saya setuju kompatibilitas POSIX harus menang, dan saya memang menggunakan nama pengguna yang mengandung titik pada beberapa sistem tanpa efek buruk.