Answers:
POSIX 指定使用可移植字符集作为用户名和组名。
_ - .允许使用的字符,请NAME_REGEX检查用户名是否仅包含指定的字符。发行版开发人员定义是否拒绝其他字符。例如,Ubuntu确实.默认禁止使用。
添加此限制可避免干扰其他系统工具,这些工具可能会解释特殊字符。考虑变量$PATH,当您有一个具有名称的用户my:user并将您的主目录添加到$PATH:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin
目录/home/my,user/bin并且(可能)不存在。此外,/etc/passwd将有两个:以上的需求。
编辑:
 
Debian的adduser(3.110版)使用/^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/的用户名检查,_ 被允许的,只要NAME_REGEX不禁止这样做。
_不是:……
                    _默认为允许,请参见编辑。我举了一个禁止字符的例子来说明:它可能存在的问题。
                    :即使您/etc/passwd手动编辑(或大多数其他用户数据库),也无法在用户名中使用,换行符或空字符。
                    我正在使用Debian Squeeze,并且设法创建了一个带下划线的用户adduser user_1。您为什么说不允许他们?
NAME_REGEX是允许的名称正则表达式,而不是不允许的名称regex ...即,如果名称匹配,NAME_REGEX则该名称有效。
                    NAME_REGEX在/etc/adduser.conf,和内置的默认者禁用_。