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