Так почему же подчеркивание считается плохим символом для имен пользователей в Debian (и, возможно, в других дистрибутивах), в то время как оно было удалено из adduserNAME_REGEX в Ubuntu?
Так почему же подчеркивание считается плохим символом для имен пользователей в Debian (и, возможно, в других дистрибутивах), в то время как оно было удалено из adduserNAME_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, а встроенный по умолчанию , запрещает _.