为什么将最大用户名长度限制为 8 个字符?

Geo*_*dan 13 user-accounts

在我卑微的 IT 职业生涯中,我通常看到用户名长度受到限制(通常为 8 个字符)。这发生在各种系统上,包括 Active Directory 和数据库应用程序。

是否有一个原因?是否有关于用户名创建的最佳实践?

jgo*_*afe 14

这是传统 Unix 系统的限制,尤其是NIS目录服务。通常,如果组织试图在所有应用程序中保持用户名一致(这通常是一个好主意),则此限制才适用。


Joh*_*nGH 6

我最近看到的主要问题是 Solaris (10) 上的 ps,它会删除第 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
Run Code Online (Sandbox Code Playgroud)

如果您在包含属于该用户的文件的目录上执行 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
Run Code Online (Sandbox Code Playgroud)

基本上,您需要警惕任何处理登录名而不仅仅是 UID 的工具。这可能包括从日志文件或数据库中读取或写入的内容,或者使用 last、who、finger、ls、ps 等工具的输出。

一个快速的谷歌打开了这个页面:

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
Run Code Online (Sandbox Code Playgroud)

它用“+”截断用户名,如果您不熟悉它将是哪个用户,这没有帮助,这意味着您不能依赖 ps 的输出,例如作为需要知道谁的脚本的输入拥有一个进程。