Каковы недостатки наличия точки в имени пользователя?

27

Студент только что спросил, что может быть плохим в том, чтобы точка ( .) в имени пользователя Например:john.doe

Как это повлияет на систему или какие-либо приложения в этом отношении?

Луис Альварадо
источник

Ответы:

38

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файлаЗначок Manpage гласит:

   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.confman-страницы):

^[a-z][-a-z0-9]*$
  • Начиная с строчной буквы, затем любое количество тире, строчных букв или цифр. Нет _, @или ..

Так,

В заключение, точка .может быть использована для имени пользователя Ubuntu, NAME_REGEXпросто нужно изменить /etc/adduser.conf. Поскольку он соответствует POSIX, не должно быть никаких проблем с наличием .имени пользователя в любой POSIX-совместимой программе.

Чтобы включить точку в именах пользователей

  1. Запустите эту команду в терминале:

    sudo nano /etc/adduser.conf
    
  2. Найдите эту строку (ближе к концу файла)

    #NAME_REGEX="^[a-z][-a-z0-9]*$"
    

    и заменить его на

    NAME_REGEX='^[a-z][-.a-z0-9]*$'
    

    Обратите внимание, что -должен оставаться первым символом в выражении в скобках [...], в противном случае он рассматривается как указание диапазона a-z.

  3. Нажмите Ctrl+ X, потом Y, потом Enter.


Ссылки:

харакири
источник
@ vasa1 Спасибо за указание на это, исправлено.
Кири
2
Привет, minerz029, прежде чем принять ответ, который, насколько я вижу, он отличный, без сомнения, не могли бы вы указать причины, по которым Ubuntu примет это решение.
Луис Альварадо
2
@LuisAlvarado: Возможно, это для совместимости с программами [не POSIX], которые ожидают имя пользователя, используя более ограниченный набор символов. Символы, которые Ubuntu разрешает по умолчанию, почти гарантированно работают практически во всех программах. Страница руководства adduser описывает регулярное выражение по умолчанию как «наиболее консервативное», что делает его более безопасным для имен пользователей.
Кири
1
Это не сработало для меня, но добавление NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"в /etc/adduser.confсделал.
Марио
1
Не меняйте регулярные выражения. Просто позвоните useraddвместо: sudo useradd -m my.user. Это то, что мы делаем в Userify, и это также кроссплатформенная.
Джеймисон Беккер,
3

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

Джо-Эрленд Шинстад
источник
Но в равной степени они могут делать предположения, которые вступают в противоречие с предположениями дистрибутива, верно?
0xC0000022L
3

Марк Хабер объясняет возможный недостаток в ошибке Debian # 604242 (по умолчанию разрешены точки в имени пользователя):

Наличие точек в имени пользователя создает некоторые проблемы с использованием сценариев chown, которые по-прежнему принимают точки в качестве разделителя между именем пользователя и именем группы. Если chownвсе еще принимает точки, будут сценарии, использующие эту нотацию, которая сломается, если имя пользователя содержит точку.

Я бы порекомендовал сохранить текущее значение по умолчанию (которое может быть перезаписано локальной конфигурацией), пока chownне перестанет принимать точки в качестве разделителя.

И по- chownпрежнему принимает точку в качестве разделителя, хотя это больше не задокументировано. Я согласен, что совместимость с POSIX должна преобладать, и я действительно использую имена пользователей, содержащие точки, в нескольких системах без каких-либо побочных эффектов

Ференц Вагнер
источник