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


39

Я хочу створити облікові записи користувачів, названі на ім'я домену. adduser скаржиться, що імена користувачів повинні відповідати NAME_REGEXзвичайному виразу.

adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

Я можу додавати користувачів за допомогою useradd без нарікань. Чи є причина, що я не повинен змінювати регулярний вираз, щоб дозволити ., -і _?

Які символи можуть спричинити проблеми, і їх не можна дозволити в іменах користувачів?

Це за замовчуванням NAME_REGEX.

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

1
Зауважте, що це NAME_REGEXвже приймається -, якщо це не перший символ.
Кільце Ø

Чому б не додати .? Розглянемо користувача на ім’я .або ... Потім rmцього користувача назвали ...
Джон

1
@Jon це не проблема, оскільки rmце не команда для використання при видаленні користувача. Я погоджуюся, ..це не розумне ім’я з подібних причин, але rmце не одна з таких.
toon81

Відповіді:


26

Моя рада вам - дотримуватися стандартних стандартів NAME_REGEX, рекомендованих типово. Фактично ви можете помістити в ім'я користувача майже що-небудь під * NIX, але у вас можуть виникнути дивні проблеми з кодом бібліотеки, що робить припущення. Справа в точці:

http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html

Моє запитання до вас: чи багато у вас доменних імен, які зіткнулися б один з одним, якби ви викреслили незвичайну пунктуацію? Наприклад, чи є у вас як доменні імена "ЗАЯВКА ЯКОСТІ" та "ЯКОСТІ"? Якщо ні, ви можете просто прийняти політику викреслення незвичайних символів та використання того, що залишилося як ім'я користувача.

Крім того, ви можете використовувати розділ "справжнє ім'я" у полі GECOS в / etc / passwd інформації для зберігання оригінального, немодифікованого імені домену, і сценарії можуть витягнути його досить легко.


Мене турбує саме випадкова несподівана помилка. Я можу досить легко видалити періоди, і досі немає шансів зіткнення імен, але - це може спричинити проблему. Все-таки це досить малоймовірно.
Ед Хабер

Отже, система debian, яку я використовую, використовує користувацькі www-дані. Так виглядає - має бути нормально, щоб використовуватись у іменах користувачів.
Ед Хабер

Власне, це регулярне вираження дозволяє «-» в іменах користувачів! Перша літера повинна бути az, але наступні літери імен користувачів можуть бути "-", az або 0-9.
steveha

Ох! ти правий. Я пропустив зайве - коли я дивився на це.
Ед Хабер

22

Більш конкретно, стандарт POSIX ("Інтерфейс портативної операційної системи для Unix") (стандарт IEEE 1003.1 2008) зазначає :


3.431 Ім'я користувача

Рядок, який використовується для ідентифікації користувача; див. також База даних користувачів. Для переносності в системах, що відповідають POSIX.1-2008, значення складається з символів з набору символів портативного файлу. <hyphen>Символ не повинен використовуватися в якості першого символу портативного імені користувача.


3.278 Набір символів портативного файлу

The set of characters from which portable filenames are constructed.

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

Будь-яке ім'я користувача, яке відповідає цьому стандарту, сумісне з POSIX і повинно бути безпечним.


6
Хоча це правда, звичайно нахмуриться мати великі регістри імен користувачів - люди мають достатньо проблем з чутливими до регістру паролями, і змушення їх запам’ятовувати регістр у своїх іменах користувачів просто натискає на них, коли вони вниз. (Виняток: Коли є ALL UPPERCASE CHARACTERS
умова

1
Станом на POSIX.1-2017, ці визначення трохи змінилися. 3.431 Ім'я користувача зараз 3.437 Ім'я користувача та 3.278 Портативний набір символів файлу зараз 3.282 Портативний набір символів файлів
Чак Волбер

@ voretaq7 Я вважаю, що легітимним є збереження регістру в імені користувача, але зробити вхід не вразливим. Таким чином, ім'я користувача може бути CatInTheHat, але увійти, вказавши catinthehat або catintheHAT або будь-що інше.
StackOverflowUser

1

З NAME_REGEX можна зробити висновок, що все, окрім z у верхньому та нижньому регістрі, і цифри від 0 до 9 були б поганими.


Слово, яке ви шукаєте, "виведене".
wfaulk

Подивіться на регулярний вираз, -також приймається (просто не як перший символ.) Також зауважте, що великі gA-ZNAME_REGEXNAME_REGEX="^[a-z][-a-z0-9]*\$"
регістри
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.