Какие имена групп разрешены для groupadd?

13

Я следовал этим инструкциям, чтобы построить Shadow, который предоставляет groupaddкоманду. Теперь я получаю ошибку при попытке это:

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

Я проверил буквенно-цифровые имена, и они работают хорошо.

tshepang
источник

Ответы:

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предполагается, что последовательность цифр рассматривается как имя, если оно находится в базе данных пользователей / групп, но другие приложения могут обрабатывать любое число как числовой идентификатор.
  • Строго говоря, инициал -или a .в имени пользователя настоятельно не рекомендуется, поскольку многие приложения ожидают возможности передачи $user.$groupво внешнюю утилиту (например chown $user.$group /path/to/file) ¹. А .в названии группы должно вызывать меньше проблем, но я все равно рекомендую против этого.
  • / может также вызвать проблемы, потому что некоторые программы ожидают, что смогут использовать имена пользователей в именах файлов.
  • Любой персонаж, который будет расширяться оболочкой, вероятно, опасен.
  • Не-ASCII символы должны быть в порядке, если вы не заботитесь о совместном использовании с системами, которые могут использовать разные кодировки.

¹ Все современные реализации ожидают chown $user:$group, но поддержка chown $user.$groupдля обеспечения обратной совместимости, и есть слишком много приложений, которые там проходят точку , чтобы удалить эту поддержку совместимости.

Жиль "ТАК - перестань быть злым"
источник
Re chownаргумент: текущий синтаксис, по крайней мере, в GNU coreutils user:group, с точкой принимается только для совместимости. Можно использовать j.smith:j.smith.
user1686
1
@grawity: Это не просто GNU coreutils, но проблема не chownсама, а в существующих сценариях и других программах, которые вызывают chown $user.$groupвместо chown $user:$group- даже если chownреализация пытается сделать правильные вещи, некоторые случаи по своей сути неоднозначны.
Жиль "ТАК - перестань быть злым"
1

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

Malvineous
источник
5
Не забудьте редактировать /etc/gshadowпри добавлении групп. Кроме того, используйте, vigr(8)а не напрямую редактировать файлы.
CAMH