Почему подчеркивания не допускаются в именах пользователей в некоторых дистрибутивах (например, Debian)
8
Так почему же подчеркивание считается плохим символом для имен пользователей в Debian (и, возможно, в других дистрибутивах), в то время как оно было удалено из adduserNAME_REGEX в Ubuntu?
Debian установил подчеркивание как требование для имен пользователей, связанных с пакетами. debian.org/doc/debian-policy/…
Rfraile
Ответы:
7
POSIX определяет использование переносимого набора символов для имен пользователей и групп. _ - .допустимые символы, NAME_REGEXпроверяет, содержит ли имя пользователя только указанные символы. Разработчики дистрибутива определяют, будут ли запрещены дальнейшие символы. Ubuntu, например, запрещает использование .по умолчанию.
Добавление этого ограничения позволяет избежать помех другим системным инструментам, которые могут интерпретировать специальные символы. Подумайте о переменной $PATH, когда у вас есть пользователь с именем my:userи добавьте свой домашний каталог в $PATH:
Каталоги /home/myи не user/binбудут (вероятно) существовать. Далее /etc/passwdбыло бы еще два, :чем нужно.
Редактировать:
Debian adduser(версия 3.110) использует /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/для проверки имен пользователей, _это разрешено, если NAME_REGEXэто не запрещено.
Теоретически вы можете использовать практически любой символ ASCII, который вы хотите, в качестве имени пользователя, но, чтобы избежать каких-либо ошибок, например, упомянутых в статье выше, вы можете установить это регулярное выражение, которое позволит избежать определенных проблем.
Вы не сможете использовать :новую строку или нулевой символ в имени пользователя, даже если вы редактируете /etc/passwd(или большинство других пользовательских баз данных) вручную.
Жиль "ТАК - перестань быть злым"
@ Жиль, да, вы правы, я исправил ответ, но подчеркивание в порядке, чтобы ответить на вопрос, NAME_REGEX предназначен для предотвращения каких-либо ошибок, но он не установлен по умолчанию, потому что обычно некоторые из этих символов разрешены.
tmow
0
Я использую Debian Squeeze и мне удалось создать пользователя с подчеркиванием adduser user_1. Почему вы говорите, что они не допускаются?
Возможно я неправильно истолковал это. Я только что вспомнил, что редактировал /etc/adduser.conf на сервере Debian, а NAME_REGEX (то есть запрещенное регулярное выражение имени) содержал подчеркивание. Тем не менее, это было прокомментировано, но я предполагаю, что оно представляет NAME_REGEX по умолчанию.
Сэм
NAME_REGEXэто разрешенное регулярное выражение имени, а не запрещенное регулярное выражение имени ... то есть, если имя совпадает, NAME_REGEXоно допустимо.
Джош
Debian Lenny (стабильный , как я пишу) не NAME_REGEXв /etc/adduser.conf, а встроенный по умолчанию , запрещает _.
Ответы:
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
, а встроенный по умолчанию , запрещает_
.