Mengapa garis bawah tidak diizinkan dalam nama pengguna di beberapa distro (misalnya Debian)

8

Jadi mengapa garis bawah dianggap sebagai karakter buruk untuk nama pengguna di Debian (dan mungkin distribusi lainnya) sementara itu telah dihapus dari adduserNAME_REGEX di Ubuntu?

Sam
sumber

Jawaban:

7

POSIX menentukan penggunaan seperangkat karakter portabel untuk nama pengguna dan grup.
_ - .diperbolehkan karakter, NAME_REGEXperiksa apakah nama pengguna hanya berisi karakter yang ditentukan. Pengembang distribusi menentukan, jika karakter lebih lanjut ditolak. Ubuntu, misalnya, tidak melarang penggunaan .secara default.

Menambahkan batasan ini menghindari gangguan dengan alat sistem lain, yang dapat menafsirkan karakter khusus. Pikirkan variabelnya $PATH, ketika Anda memiliki pengguna dengan nama my:userdan tambahkan direktori home Anda ke $PATH:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin

Direktori /home/mydan user/binakan (mungkin) tidak ada. Selanjutnya, /etc/passwdakan memiliki dua :lebih dari yang dibutuhkan.

Edit:
Debian adduser(versi 3.110) menggunakan /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/untuk memeriksa nama pengguna, _ yang diperbolehkan selama NAME_REGEXtidak melarangnya.

mengibaskan
sumber
1
Tetapi pertanyaannya adalah tentang _tidak :...
Josh
Bukankah @ juga diperbolehkan di posix, setidaknya menurut adduser
Sam
Dan ya sementara itu menjelaskan mengapa Anda tidak seharusnya mengizinkan: itu tidak menjelaskan mengapa _ buruk.
Sam
1
_diizinkan secara default, lihat hasil edit. Saya memberi contoh karakter terlarang :untuk menunjukkan kemungkinan masalah dengan itu.
Mengibas
@ Sam, @ tidak diizinkan dalam POSIX, lihat askubuntu.com/a/405668/13482
Daniel Serodio
3

Pertanyaan serupa sudah dijawab di sini

Secara teoritis Anda dapat menggunakan hampir semua karakter ASCII yang Anda inginkan sebagai nama pengguna, tetapi, untuk menghindari beberapa jenis bug, seperti yang disebutkan dalam artikel di atas, Anda dapat mengatur ekspresi reguler yang menghindari masalah tertentu.

tmow
sumber
Anda tidak akan dapat menggunakan :, baris baru atau karakter nol dalam nama pengguna bahkan jika Anda mengedit /etc/passwd(atau kebanyakan database pengguna lain) dengan tangan.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles ya Anda benar, saya mengoreksi jawabannya, tetapi garis bawahnya baik-baik saja, untuk menjawab pertanyaan NAME_REGEX ada di sana untuk mencegah beberapa jenis bug, tetapi tidak disetel sebagai default karena biasanya beberapa karakter ini diperbolehkan.
tmow
0

Saya menggunakan Debian Squeeze dan saya berhasil membuat pengguna dengan garis bawah adduser user_1,. Mengapa Anda mengatakan mereka tidak diizinkan?

tepang
sumber
Mungkin saya salah mengartikannya. Saya baru ingat mengedit /etc/adduser.conf di server Debian dan NAME_REGEX (yaitu regex nama yang tidak diizinkan) berisi garis bawah. Namun ada komentar di sana, tapi saya kira saya berasumsi bahwa itu mewakili NAME_REGEX default.
Sam
NAME_REGEXadalah regex nama yang diizinkan , bukan regex nama yang tidak diizinkan ... yaitu jika nama cocok NAME_REGEXmaka itu valid.
Josh
Lenian Lenny (stabil saat saya menulis) tidak ada NAME_REGEXdi /etc/adduser.conf, dan bawaan bawaan melarang _.
Gilles 'SANGAT berhenti menjadi jahat'