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

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

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

27
задан 04.05.2020, 19:24

3 ответа

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 icon ] заявляет:

   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-совместимой программой.

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

  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 .


Ссылки:

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

  • Нажмите Ctrl + X , затем Y , затем Enter .


  • Ссылки:

    37
    ответ дан 04.05.2020, 19:24
    • 1
      Привет minerz029, прежде, чем принять ответ, который, насколько я вижу, это - превосходное несомненно, мог Вы обеспечивать причины, почему Ubuntu принял бы это решение. – Iulian Onofrei 04.05.2020, 19:24
    • 2
      @LuisAlvarado: It' s возможный это it' s для совместимости с [не POSIX] программы, которые ожидают имя пользователя с помощью более ограниченного набора символов. Символы Ubuntu позволяют, по умолчанию, как почти гарантируют, будут работать почти во всех программах. adduser страница справочника описывает значение по умолчанию regex как " большая часть conservative" находясь на более безопасной стороне имен пользователей. – Itachi 04.05.2020, 19:25
    • 3
      @vasa1 спасибо за указание на это, зафиксированное. – Manni 04.05.2020, 19:26

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

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

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

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

    3
    ответ дан 04.05.2020, 19:25

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

    3
    ответ дан 04.05.2020, 19:25
    • 1
      Но одинаково они могут тогда сделать предположения, которые сталкиваются с предположениями, сделанными дистрибутивом, правильно? – KickingLettuce 04.05.2020, 19:26

    Теги

    Похожие вопросы