Студент просто запитав, що може бути недоліком наявності крапки ( .
) в імені користувача. Наприклад: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 . _ -
Також на сторінці сторінки для цього /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
):
^[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 повинна переважати, і я дійсно використовую імена користувачів, що містять крапки в декількох системах без будь-яких негативних наслідків.