我想创build以域名命名的用户帐户。 adduser抱怨用户名需要匹配NAME_REGEX
正则expression式。
adduser: Please enter a username matching the regular expression configured via the NAME_REGEX configuration variable. Use the `--force-badname' option to relax this check or reconfigure NAME_REGEX.
我可以添加使用useradd的用户没有投诉。 是否有一个原因,我不应该修改正则expression式允许.
, -
和_
?
什么字符会导致问题,不应该被允许在用户名?
这是默认的NAME_REGEX
。
NAME_REGEX="^[az][-a-z0-9]*\$"
我对你的build议是遵循默认的NAME_REGEXbuild议的标准。 实际上,你可以在* NIX下的用户名中放入几乎任何东西,但是你可能会遇到一些奇怪的问题,这些问题可以用来作出假设。 例如:
http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html
我对你的问题:如果你去除不寻常的标点符号,你是否有很多域名会相互冲突? 例如,您是否同时拥有“QUALITY-ASSURANCE”和“QUALITYASSURANCE”作为域名?如果不是,您可以简单地采用剥离不寻常字符并使用剩下的用户名称的策略。
另外,可以使用/ etc / passwd信息中GECOS字段的“真实名称”部分来存储原始的,未修改的域名,脚本可以很容易地将其提取出来。
更具体地说, POSIX(“Unix的便携式操作系统接口”)标准(IEEE标准1003.1 2008)指出 :
3.431用户名
用于标识用户的string; 另请参阅用户数据库。 为了在符合POSIX.1-2008的系统间移植,该值由便携文件名字符集中的字符组成。 不能将
<hyphen>
字符用作便携式用户名的第一个字符。
3.278便携式文件名字符集
The set of characters from which portable filenames are constructed. ABCDEFGHIJKLMNOPQRSTU VWXYZ abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9 . _ -
任何符合此标准的用户名都符合POSIX标准,并且应该是安全的。
从NAME_REGEX可以推断出,除了大写和小写之外的所有内容,以及从0到9的数字都是不好的。