Студент только что спросил, что может быть плохим в том, чтобы иметь точку (.
) в имени пользователя. Например: 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), кажется, запрещает это: ]
По умолчанию NAME_REGEX
в Ubuntu (из man-страницы /etc/adduser.conf
):
^[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 kbd> + X kbd>, затем Y kbd>, затем Enter kbd>.
Ссылки:
man adduser.conf
Обратите внимание, что -
должен оставаться первым символом в выражении в скобках [...]
, в противном случае он рассматривается как указав диапазон a-z
.
Нажмите Ctrl kbd> + X kbd>, затем Y kbd>, затем Enter kbd>.
Ссылки:
Приложения, которые читают имена пользователей, могут использовать регулярное выражение, которое предполагает, что ваше имя пользователя следует правилам и, следовательно, не может обрабатывать ваше имя пользователя.
Марк Хабер объясняет возможный недостаток в ошибке Debian # 604242 (по умолчанию разрешены точки в имени пользователя):
Наличие точек в имени пользователя создает некоторые проблемы с использованием сценариев.
chown
, который по-прежнему принимает точки в качестве разделителя между именем пользователя и именем группы. Еслиchown
все еще принимает точки, будут сценарии, использующие эту нотацию, которые прервутся, если имя пользователя содержит точку.Я бы порекомендовал сохранить текущее значение по умолчанию (которое может быть перезаписано локальной конфигурацией), пока
chown
не перестанет принимать точки в качестве разделителя.
И chown
по-прежнему принимает точку в качестве разделителя, хотя это больше не задокументировано. Я согласен, что совместимость с POSIX должна преобладать, и я действительно использую имена пользователей, содержащие точки, в нескольких системах без каких-либо побочных эффектов.