Так почему же подчеркивание считается плохим символом для имен пользователей в Debian (и, возможно, в других дистрибутивах), в то время как оно было удалено из adduser
NAME_REGEX в Ubuntu?
Так почему же подчеркивание считается плохим символом для имен пользователей в Debian (и, возможно, в других дистрибутивах), в то время как оно было удалено из adduser
NAME_REGEX в Ubuntu?
Ответы:
POSIX определяет использование переносимого набора символов для имен пользователей и групп.
_ - .
допустимые символы, NAME_REGEX
проверяет, содержит ли имя пользователя только указанные символы. Разработчики дистрибутива определяют, будут ли запрещены дальнейшие символы. Ubuntu, например, запрещает использование .
по умолчанию.
Добавление этого ограничения позволяет избежать помех другим системным инструментам, которые могут интерпретировать специальные символы. Подумайте о переменной $PATH
, когда у вас есть пользователь с именем my:user
и добавьте свой домашний каталог в $PATH
:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/home/my:user/bin
Каталоги /home/my
и не user/bin
будут (вероятно) существовать. Далее /etc/passwd
было бы еще два, :
чем нужно.
Редактировать:
Debian adduser
(версия 3.110) использует /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/
для проверки имен пользователей, _
это разрешено, если NAME_REGEX
это не запрещено.
_
не о :
...
_
по умолчанию разрешено, см. редактирование. Я привел пример с запрещенным персонажем, :
чтобы показать возможные проблемы с ним.
Подобный вопрос уже был дан ответ здесь
Теоретически вы можете использовать практически любой символ ASCII, который вы хотите, в качестве имени пользователя, но, чтобы избежать каких-либо ошибок, например, упомянутых в статье выше, вы можете установить это регулярное выражение, которое позволит избежать определенных проблем.
:
новую строку или нулевой символ в имени пользователя, даже если вы редактируете /etc/passwd
(или большинство других пользовательских баз данных) вручную.
Я использую Debian Squeeze и мне удалось создать пользователя с подчеркиванием adduser user_1
. Почему вы говорите, что они не допускаются?
NAME_REGEX
это разрешенное регулярное выражение имени, а не запрещенное регулярное выражение имени ... то есть, если имя совпадает, NAME_REGEX
оно допустимо.
NAME_REGEX
в /etc/adduser.conf
, а встроенный по умолчанию , запрещает _
.