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
,和内置的默认者禁用_
。