Назад | Перейти на главную страницу

Зачем ограничивать максимальную длину имени пользователя 8 символами?

На протяжении моей скромной карьеры в ИТ я обычно видел, что длина имени пользователя ограничена (обычно до 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, например. в качестве входных данных для сценария, который должен знать, кому принадлежит процесс.