Студент только что спросил, что может быть плохим в том, чтобы точка ( .
) в имени пользователя Например:john.doe
Как это повлияет на систему или какие-либо приложения в этом отношении?
Студент только что спросил, что может быть плохим в том, чтобы точка ( .
) в имени пользователя Например:john.doe
Как это повлияет на систему или какие-либо приложения в этом отношении?
Ответы:
POSIX заявляет это об именах пользователей:
[...] Для переносимости между системами, соответствующими стандарту IEEE Std 1003.1-2001, значение состоит из символов из набора символов переносимого имени файла. Дефис не должен использоваться в качестве первого символа переносимого имени пользователя.
... где переносимый набор символов имени файла :
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 . _ -
Кроме того, man-страница для /etc/adduser.conf
файла гласит:
VALID NAMES
adduser and addgroup enforce conformity to IEEE Std 1003.1-2001,
which allows only the following characters to appear in group
and user names: letters, digits, underscores, periods, at signs
(@) and dashes. The name may not start with a dash. The "$" sign
is allowed at the end of usernames (to conform to samba).
An additional check can be adjusted via the configuration
parameter NAME_REGEX to enforce a local policy.
Хотя обе спецификации, кажется, включают точку, Ubuntu (по крайней мере на моем 13.04), кажется, запрещает это:
⊳ sudo adduser as.df
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX[_SYSTEM] configuration variable. Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
По умолчанию NAME_REGEX
в Ubuntu (с /etc/adduser.conf
man-страницы):
^[a-z][-a-z0-9]*$
_
, @
или .
.В заключение, точка .
может быть использована для имени пользователя Ubuntu, NAME_REGEX
просто нужно изменить /etc/adduser.conf
. Поскольку он соответствует POSIX, не должно быть никаких проблем с наличием .
имени пользователя в любой POSIX-совместимой программе.
Запустите эту команду в терминале:
sudo nano /etc/adduser.conf
Найдите эту строку (ближе к концу файла)
#NAME_REGEX="^[a-z][-a-z0-9]*$"
и заменить его на
NAME_REGEX='^[a-z][-.a-z0-9]*$'
Обратите внимание, что -
должен оставаться первым символом в выражении в скобках [...]
, в противном случае он рассматривается как указание диапазона a-z
.
Нажмите Ctrl+ X, потом Y, потом Enter.
Ссылки:
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
в /etc/adduser.conf
сделал.
useradd
вместо: sudo useradd -m my.user
. Это то, что мы делаем в Userify, и это также кроссплатформенная.
Приложения, которые читают имена пользователей, могут использовать регулярное выражение, которое предполагает, что ваше имя пользователя следует правилам и, следовательно, не может обрабатывать ваше имя пользователя.
Марк Хабер объясняет возможный недостаток в ошибке Debian # 604242 (по умолчанию разрешены точки в имени пользователя):
Наличие точек в имени пользователя создает некоторые проблемы с использованием сценариев
chown
, которые по-прежнему принимают точки в качестве разделителя между именем пользователя и именем группы. Еслиchown
все еще принимает точки, будут сценарии, использующие эту нотацию, которая сломается, если имя пользователя содержит точку.Я бы порекомендовал сохранить текущее значение по умолчанию (которое может быть перезаписано локальной конфигурацией), пока
chown
не перестанет принимать точки в качестве разделителя.
И по- chown
прежнему принимает точку в качестве разделителя, хотя это больше не задокументировано. Я согласен, что совместимость с POSIX должна преобладать, и я действительно использую имена пользователей, содержащие точки, в нескольких системах без каких-либо побочных эффектов