Какие символы я должен использовать или не использовать в именах пользователей в Linux?

39

Я хочу создать учетные записи пользователей, названные в честь доменного имени. adduser жалуется, что имена пользователей должны соответствовать NAME_REGEXрегулярному выражению.

adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

Я могу добавить пользователей, использующих useradd без жалоб. Есть ли причина, по которой я не должен изменять регулярное выражение, чтобы разрешить ., -и _?

Какие символы будут вызывать проблемы и не должны быть разрешены в именах пользователей?

Это по умолчанию NAME_REGEX.

NAME_REGEX="^[a-z][-a-z0-9]*\$"
Эд Хабер
источник
1
Обратите внимание, что NAME_REGEXуже принимает, -пока это не первый символ.
Кольцо Ø
Почему бы не добавить .? Рассмотрим пользователя с именем .или ... Затем rmэтот пользователь по имени ...
Джон
1
@Jon, это не проблема, так как rmэто не команда, используемая при удалении пользователя. Я согласен, что ..это не разумное имя по тем же причинам, но rmне является одним из них.
toon81

Ответы:

26

Я советую вам следовать стандарту, рекомендованному по умолчанию NAME_REGEX. На самом деле вы можете поместить почти все в имя пользователя в * NIX, но вы можете столкнуться со странными проблемами с библиотечным кодом, который делает предположения. Дело в точке:

http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html

Мой вопрос к вам: у вас есть много доменных имен, которые столкнулись бы друг с другом, если бы вы удалили необычную пунктуацию? Например, есть ли у вас как «QUALITY-ASSURANCE», так и QUALITYASSURANCE »в качестве доменных имен? Если нет, вы можете просто принять политику удаления необычных символов и использовать то, что осталось в качестве имени пользователя.

Кроме того, вы можете использовать раздел «настоящее имя» поля GECOS в информации / etc / passwd для хранения исходного неизмененного имени домена, а сценарии могут извлечь его довольно легко.

steveha
источник
Меня беспокоит случайная неожиданная ошибка. Я могу довольно легко удалить периоды, и у меня все еще нет шансов столкновения имен, но - может вызвать проблемы. Тем не менее это довольно маловероятно.
Эд Хабер
Итак, система debian, которую я использую, использует пользовательские www-данные. Так что похоже - должно быть в порядке, чтобы использоваться в именах пользователей.
Эд Хабер
На самом деле, это регулярное выражение разрешает '-' в именах пользователей! Первая буква должна быть az, но последующие буквы имен пользователей могут быть '-', az или 0-9.
Steveha
Оу! вы правы. Я пропустил дополнительное - когда я смотрел на это.
Эд Хабер
22

В частности, стандарт POSIX («Интерфейс переносимой операционной системы для Unix») (Стандарт IEEE 1003.1 2008) гласит :


3.431 Имя пользователя

Строка, используемая для идентификации пользователя; см. также базу данных пользователей. Для переносимости между системами, соответствующими стандарту POSIX.1-2008, значение состоит из символов из набора символов переносимого имени файла. Символ <hyphen>не должен использоваться в качестве первого символа переносимого имени пользователя.


3.278 Портативный набор символов имени файла

The set of characters from which portable filenames are constructed.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -

Любое имя пользователя, соответствующее этому стандарту, является POSIX-совместимым и должно быть безопасным.

HopelessN00b
источник
6
Несмотря на то, что это правда, обычно не одобряют наличие символов верхнего регистра в именах пользователей - у людей достаточно проблем с паролями, чувствительными к регистру, и заставлять их запоминать регистр в своих именах пользователей просто пинает их, когда они не работают. (Исключение: когда ваше соглашение об имени пользователя ALL UPPERCASE CHARACTERS.)
voretaq7
1
Начиная с POSIX.1-2017, эти определения немного изменились. 3.431 Имя пользователя теперь 3.437 Имя пользователя и 3.278 Портативный набор символов имени файла теперь 3.282 Портативный набор символов имени файла
Чак Вольбер
@ voretaq7 То, что я считаю законным, это сохранить регистр в имени пользователя, но сделать регистрацию без учета регистра. Таким образом, имя пользователя может быть CatInTheHat, но войти, указав catinthehat или catintheHAT или что-то еще.
StackOverflowUser
1

Из NAME_REGEX можно сделать вывод, что все, кроме a - z в верхнем и нижнем регистре и цифры от 0 до 9, будет плохим.

wzzrd
источник
Слово, которое вы ищете, «выведено».
wfaulk
посмотрите на регулярное выражение еще раз, -также принимается (только не в качестве первого символа.) Также обратите внимание, что по умолчанию заглавные буквы не принимаются ( gфлаг отсутствует и не A-Zвходит в NAME_REGEX регулярное выражение, предоставленное OP.NAME_REGEX="^[a-z][-a-z0-9]*\$"
SherylHohman