Apa nama grup yang diizinkan untuk groupadd?

13

Saya mengikuti instruksi ini untuk membangun Shadow, yang menyediakan groupaddperintah. Saya sekarang mendapatkan kesalahan saat mencoba ini:

$ groupadd automake1.10
groupadd: 'automake1.10' is not a valid group name

Saya memeriksa nama alfanumerik, dan mereka berfungsi dengan baik.

tepang
sumber

Jawaban:

20

Lihat kode sumber, secara khusus libmisc/chkname.c. Bayangan cukup konservatif: nama harus cocok dengan regexp [_a-z][-0-9_a-z]*\$?dan mungkin paling GROUP_NAME_MAX_LENGTHpanjang karakter (opsi konfigurasi, default 16; nama pengguna biasanya bisa naik hingga 32 karakter, tergantung pada penentuan waktu kompilasi).

Debian banyak bersantai. Pada pemerasan, apa pun kecuali spasi dan :diizinkan. Lihat bug # 264879 dan bug # 377844 .

POSIX membutuhkan huruf yang memungkinkan dari kedua case, digit dan ._-( seperti dalam nama file ). POSIX tidak menetapkan batasan apa pun jika Anda tidak peduli tentang portabilitas. Sejumlah batasan yang disarankan berasal dari penggunaan:

  • Titik dua, baris baru dan nol sama sekali keluar; Anda tidak bisa menggunakannya di /etc/passwdatau /etc/group.
  • Nama yang hanya terdiri dari digit adalah ide yang buruk - chowndan chgrpseharusnya memperlakukan urutan digit sebagai nama jika berada dalam basis data pengguna / grup, tetapi aplikasi lain dapat memperlakukan nomor apa pun sebagai id numerik.
  • Inisial -atau .dalam nama pengguna sangat tidak disarankan, karena banyak aplikasi berharap dapat beralih $user.$groupke utilitas eksternal (misalnya chown $user.$group /path/to/file) ¹. A .dalam nama grup seharusnya tidak terlalu merepotkan, tetapi saya tetap merekomendasikan untuk tidak melakukannya.
  • / kemungkinan akan menimbulkan masalah juga, karena beberapa program berharap dapat menggunakan nama pengguna dalam nama file.
  • Karakter apa pun yang akan diperluas shell mungkin berisiko.
  • Karakter non-ASCII harus ok jika Anda tidak peduli berbagi dengan sistem yang mungkin menggunakan pengkodean yang berbeda.

Expect Semua implementasi modern mengharapkan chown $user:$group, tetapi mendukung chown $user.$groupkompatibilitas mundur, dan ada terlalu banyak aplikasi di luar sana yang melewati titik untuk menghapus dukungan kompatibilitas itu.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
chownArgumen ulang : sintaks saat ini, setidaknya dalam GNU coreutils, adalah user:group, dengan titik yang diterima hanya untuk kompatibilitas. Orang bisa menggunakan j.smith:j.smith.
user1686
1
@grawity: Ini bukan hanya GNU coreutils, tetapi masalahnya bukan chownsendiri, skrip yang ada dan program lain yang memanggil chown $user.$groupbukannya chown $user:$group- bahkan jika chownimplementasi mencoba untuk melakukan hal yang benar, beberapa kasus secara intrinsik ambigu.
Gilles 'SO- stop being evil'
1

Jika Anda ingin bertualang, Anda dapat mengedit /etc/groupsecara langsung dan memasukkan nama grup apa pun yang Anda suka. Juga, ini memiliki bonus tambahan bahwa ketika Anda menemukan salah satu masalah yang disebutkan @Gilles, Anda mungkin tidak dapat memuat editor untuk memperbaiki masalah, atau bahkan masuk sama sekali - memberi Anda pengalaman berharga dalam memulihkan sistem yang rusak!

Malvine
sumber
5
Jangan lupa mengedit /etc/gshadowsaat menambahkan grup. Juga, gunakan vigr(8)daripada langsung mengedit file.
camh