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

13

На протяжении всей моей скромной карьеры в ИТ я обычно видел, что длина имени пользователя ограничена (обычно до 8 символов). Это происходит в различных системах, включая Active Directory и приложения баз данных.

Есть причина для этого? Есть ли лучшие практики в отношении создания имени пользователя?

Geordan
источник
1
Хороший вопрос, но я дрожу каждый раз, когда вижу термин «лучшая практика». Там нет такого животного.
Джон Гарденье

Ответы:

14

Это ограничение унаследованных систем Unix, в частности службы каталогов NIS . Обычно это ограничение действует только в том случае, если организация пытается поддерживать согласованность имен пользователей во всех приложениях (что, как правило, является хорошей идеей).

jgoldschrafe
источник
1
+1, наименьший общий знаменатель вызывает множество этих ограничений. AD может поддерживать 256 имен пользователей, но сервер Solaris 7 в ядре может содержать до 8 символов. Кроме того, те же ограничения применяются к длине пароля.
sysadmin1138
О, привет, парень из блога, который я читаю время от времени. Sup? :)
jgoldschrafe
1
А в системах MSWindows - унаследованный от MSDOS предел в 8 символов в имени файла
symcbean
Нет, от него избавились - с Windows 95. Даже Fat получил обновление, включающее режим совместимости;)
TomTom
6

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

JohnGH
источник