На протяжении моей скромной карьеры в ИТ я обычно видел, что длина имени пользователя ограничена (обычно до 8 символов). Это происходит в различных системах, включая Active Directory и приложения для баз данных.
Для этого есть причина? Есть ли лучшие практики в отношении создания имени пользователя?
Это ограничение устаревших систем Unix, и Шекелей в частности, справочная служба. Обычно это ограничение применяется, если организация пытается сохранить единообразие имен пользователей для всех приложений (что обычно является хорошей идеей).
Основная проблема, с которой я столкнулся в последнее время, - это ps в Solaris (10), она удаляет 9-й + символы, поэтому, например, если вам нужно найти имя пользователя с помощью grep, оно не будет совпадать.
$ sudo -u longusername ps -fu longusername
UID PID PPID C STIME TTY TIME CMD
longuser 14012 11985 0 09:58:39 pts/2 0:00 ps -fu longusername
Если вы выполните ls -l для каталога с файлами, принадлежащими этому пользователю, столбцы будут вытеснены из выравнивания.
$ ls -ld /export/home/l*
drwxr-xr-x 2 lauser users 6 Mar 23 10:21 /export/home/lzuser
drwxr-xr-x 2 longusername users 6 May 4 10:02 /export/home/longusername
drwxr-xr-x 2 lzuser users 6 Mar 12 11:21 /export/home/lzuser
По сути, вам нужно опасаться любого инструмента, который имеет дело с именами для входа, а не только с UID. Это может включать в себя вещи, которые читают или записывают в файлы журналов или базы данных, или используют вывод таких инструментов, как last, who, finger, ls, ps и т. Д.
Быстрый Google открыл эту страницу:
http://fixunix.com/sun/113647-username-lenght-more-then-8-characters.html
Что добавляет еще несколько причин.
Что касается передовых методов создания имен пользователей, также могут возникнуть сложности при использовании логинов в заглавных, а не в нижних регистрах, так что этого также следует избегать.
Когда некоторые (более старые) системы, когда видят логин только заглавными буквами, они по умолчанию предполагают, что терминал пользователя не поддерживает строчные буквы, поэтому установите ВСЕ заглавными буквами (что может помешать вводу пароля и возможности ввода Команды Unix после входа в систему!)
Изменить (16.04.2019):
Я только что заметил в RHEL 7.5, что вывод ps тоже не очень хорош:
$ ps -fulongusername
UID PID PPID C STIME TTY TIME CMD
longuse+ 1230 27243 0 Apr13 pts/0 00:00:00 vim somescript.sh
longuse+ 1701 27243 0 Apr05 pts/0 00:00:00 vim another-script.sh
longuse+ 3116 27243 0 Apr12 pts/0 00:00:01 vim test_script.sh
Он усекает имя пользователя с помощью знака '+', что бесполезно, если вы не знаете, каким пользователем это будет, и означает, что вы не можете полагаться на вывод ps, например. в качестве входных данных для сценария, который должен знать, кому принадлежит процесс.