Почему подчеркивания не допускаются в именах пользователей в некоторых дистрибутивах (например, Debian)

8

Так почему же подчеркивание считается плохим символом для имен пользователей в Debian (и, возможно, в других дистрибутивах), в то время как оно было удалено из adduserNAME_REGEX в Ubuntu?

Сэм
источник
Debian установил подчеркивание как требование для имен пользователей, связанных с пакетами. debian.org/doc/debian-policy/…
Rfraile

Ответы:

7

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это не запрещено.

шутник
источник
1
Но вопрос был _не о :...
Джош
Разве @ не допускается в posix, по крайней мере, согласно adduser
Сэм
И да, пока это объясняет, почему вы не должны позволять: это не объясняет, почему _ это плохо.
Сэм
1
_по умолчанию разрешено, см. редактирование. Я привел пример с запрещенным персонажем, :чтобы показать возможные проблемы с ним.
вилять
@Sam, @ не допускается в POSIX, см. Askubuntu.com/a/405668/13482
Даниэль Серодио,
3

Подобный вопрос уже был дан ответ здесь

Теоретически вы можете использовать практически любой символ ASCII, который вы хотите, в качестве имени пользователя, но, чтобы избежать каких-либо ошибок, например, упомянутых в статье выше, вы можете установить это регулярное выражение, которое позволит избежать определенных проблем.

tmow
источник
Вы не сможете использовать :новую строку или нулевой символ в имени пользователя, даже если вы редактируете /etc/passwd(или большинство других пользовательских баз данных) вручную.
Жиль "ТАК - перестань быть злым"
@ Жиль, да, вы правы, я исправил ответ, но подчеркивание в порядке, чтобы ответить на вопрос, NAME_REGEX предназначен для предотвращения каких-либо ошибок, но он не установлен по умолчанию, потому что обычно некоторые из этих символов разрешены.
tmow
0

Я использую Debian Squeeze и мне удалось создать пользователя с подчеркиванием adduser user_1. Почему вы говорите, что они не допускаются?

tshepang
источник
Возможно я неправильно истолковал это. Я только что вспомнил, что редактировал /etc/adduser.conf на сервере Debian, а NAME_REGEX (то есть запрещенное регулярное выражение имени) содержал подчеркивание. Тем не менее, это было прокомментировано, но я предполагаю, что оно представляет NAME_REGEX по умолчанию.
Сэм
NAME_REGEXэто разрешенное регулярное выражение имени, а не запрещенное регулярное выражение имени ... то есть, если имя совпадает, NAME_REGEXоно допустимо.
Джош
Debian Lenny (стабильный , как я пишу) не NAME_REGEXв /etc/adduser.conf, а встроенный по умолчанию , запрещает _.
Жиль "ТАК - перестань быть злым"