Смотрите исходный код, в частности 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
для обеспечения обратной совместимости, и есть слишком много приложений, которые там проходят точку , чтобы удалить эту поддержку совместимости.
chown
аргумент: текущий синтаксис, по крайней мере, в GNU coreutilsuser:group
, с точкой принимается только для совместимости. Можно использоватьj.smith:j.smith
.