Які дозволені назви груп для groupadd?


13

Я дотримувався цих інструкцій, щоб створити Shadow, який забезпечує groupaddкоманду. Зараз я отримую помилку при спробі цього:

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

Я перевірив буквено-цифрові назви, і вони добре працюють.

Відповіді:


20

Зокрема, див. Вихідний код libmisc/chkname.c. Тінь досить консервативна: імена повинні відповідати регулярному вираженню [_a-z][-0-9_a-z]*\$?та можуть містити не більше GROUP_NAME_MAX_LENGTHсимволів (параметр налаштування, типово 16; імена користувачів можуть містити до 32 символів, залежно від часу компіляції).

Debian сильно розслаблює чек. На віджимання :дозволено все, крім пробілу . Дивіться про помилку # 264879 та помилку # 377844 .

POSIX вимагає дозволу літер будь-якого регістру, цифр та ._-( як імена файлів ). POSIX не встановлює жодних обмежень, якщо ви не дбаєте про переносимість. Низка рекомендованих обмежень випливає із використання:

  • Колони, нові рядки та нулі прямо виходять; ви просто не можете їх використовувати в /etc/passwdабо /etc/group.
  • Ім'я, що складається виключно з цифр, є поганою ідеєю - chownі chgrpвони повинні трактувати послідовність цифр як ім'я, якщо воно є в базі даних користувачів / групи, але інші програми можуть розглядати будь-яке число як числовий ідентифікатор.
  • Ініціатор -або .ім'я користувача настійно не рекомендується, оскільки багато програм очікують, що вони зможуть перейти $user.$groupдо зовнішньої утиліти (наприклад chown $user.$group /path/to/file) ¹. .Назва групи повинно викликати менше проблем, але я все ж рекомендую проти нього.
  • / ймовірно, це спричинить проблеми, оскільки деякі програми очікують, що вони зможуть використовувати імена користувачів у іменах файлів.
  • Будь-який символ, який оболонка розширить, мабуть, ризикований.
  • Символи, що не належать до ASCII, мають бути нормальними, якщо вам не байдуже ділитися з системами, які можуть використовувати різні кодування.

Expect Очікуються всі сучасні реалізації chown $user:$group, але підтримка chown $user.$groupзворотної сумісності, і там надто багато додатків, які передають крапку, щоб видалити цю підтримку сумісності.


Повторний chownаргумент: поточний синтаксис, принаймні, в GNU coreutils, є user:group, якщо крапка приймається лише для сумісності. Можна використовувати j.smith:j.smith.
користувач1686

1
@grawity: Це не лише GNU coreutils, але проблема не chownсама, це наявні сценарії та інші програми, які викликають chown $user.$groupзамість цього, chown $user:$group- навіть якщо chownреалізація намагається зробити правильно, деякі випадки суттєво неоднозначні.
Жил "ТАК - перестань бути злим"

1

Якщо ви відчуваєте пригоди, можете /etc/groupбезпосередньо редагувати та вносити будь-яку назву групи. Крім того, це має додатковий бонус, що якщо ви зіткнулися з однією з проблем @Gilles, згаданих, ви не зможете завантажити редактор, щоб усунути проблему, або взагалі увійти в систему - надаючи цінний досвід відновлення зламаної системи!


5
Не забудьте редагувати, /etc/gshadowдодаючи групи. Крім того, використовуйте, vigr(8)а не безпосередньо редагуйте файли.
camh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.