纵观我在IT方面的卑微职业,我通常会看到用户名长度有限(通常为8个字符)。 这发生在各种系统上,包括Active Directory和数据库应用程序。
这是有原因吗? 有关用户名创build的最佳做法吗?
这是传统Unix系统的限制,特别是NIS目录服务。 通常情况下,如果组织试图在所有应用程序中保持用户名一致(这通常是一个好主意),那么这个限制是恰到好处的。
我最近遇到的主要问题是Solaris(10)上的PS,它closures了第9个字符,所以例如,如果您需要grepinput不匹配的用户名。
$ 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
基本上你需要警惕任何处理login名的工具,而不仅仅是UID。 这可能包括读取或写入日志文件或数据库的东西,或者使用像last,who,finger,ls,ps等工具的输出。
一个快速的谷歌翻开了这个页面:
http://fixunix.com/sun/113647-username-lenght-more-then-8-characters.html
这又增加了一些原因。
关于创build用户名的最佳做法,也可能会出现使用大写而不是小写字母login的复杂情况,因此也应该避免使用。
当一些(较旧的)系统仅在大写字母上看到login时,它们有助于默认假定用户的terminal不支持小写字母,所以将所有设置设为大写(这可以防止input密码并能够inputUnix命令一旦你login!)