Які недоліки мати крапку в імені користувача?


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 . _ -

Також на сторінці сторінки для цього /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.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.


Список літератури:


@ vasa1 Дякуємо, що вказали на це, виправлено.
кірі

2
Привіт, minerz029, перш ніж приймати відповідь, яка, наскільки я бачу, це відмінний, без сумніву, можете, будь ласка, надати причини, чому Ubuntu прийме це рішення.
Луїс Альварадо

2
@LuisAlvarado: Можливо, це сумісність з програмами [non 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 повинна переважати, і я дійсно використовую імена користувачів, що містять крапки в декількох системах без будь-яких негативних наслідків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.