在用户名中加点有什么缺点?
一位学生刚刚问到用户名中有一个点( .
)的缺点是什么。 例如: john.doe
这将如何影响系统或任何应用程序?
POSIX 说明了这个用户名:
[…]要在符合IEEE Std 1003.1-2001的系统之间移植,该值由便携式文件名字符集中的字符组成。 连字符不应用作便携式用户名的第一个字符。
…便携式文件名字符集是:
ABCDEFGHIJKLMNOPQRSTU VWXYZ abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9 . _ -
此外,/ /etc/adduser.conf
文件的联机帮助页 状态:
VALID NAMES adduser and addgroup enforce conformity to IEEE Std 1003.1-2001, which allows only the following characters to appear in group and user names: letters, digits, underscores, periods, at signs (@) and dashes. The name may not start with a dash. The "$" sign is allowed at the end of usernames (to conform to samba). An additional check can be adjusted via the configuration parameter NAME_REGEX to enforce a local policy.
然而,
虽然两个规范似乎都包含了点,但Ubuntu(至少在我的13.04上)似乎不允许它:
⊳ sudo adduser as.df adduser: Please enter a username matching the regular expression configured via the NAME_REGEX[_SYSTEM] configuration variable. Use the `--force-badname' option to relax this check or reconfigure NAME_REGEX.
Ubuntu中的默认NAME_REGEX
是(来自/etc/adduser.conf
联机帮助页):
^[az][-a-z0-9]*$
- 从小写字母开始,然后是任意数量的破折号,小写字母或数字。 没有
_
,@
或.
。
所以,
总之一点.
可以用于Ubuntu用户名,只需在/etc/adduser.conf
更改/etc/adduser.conf
。 看来它符合POSIX,不应该有任何问题.
在任何POSIX兼容程序的用户名中。
在用户名中启用点
-
在终端中运行此命令:
sudo nano /etc/adduser.conf
-
找到这一行(靠近文件末尾)
#NAME_REGEX="^[az][-a-z0-9]*$"
并替换它
NAME_REGEX='^[az][-.a-z0-9]*$'
请注意,
-
必须保留括号表达式[...]
的第一个字符,否则将其视为指定范围az
。 -
按Ctrl + X ,然后按Y ,然后按Enter 。
参考文献:
- 为什么在某些发行版中的用户名中不允许使用下划线(例如Debian)
-
man adduser.conf
读取用户名的应用程序可能使用正则表达式,假定您的用户名遵循规则,因此无法处理您的用户名。
Marc Haber解释了Debian bug #604242可能存在的缺点(默认情况下允许用户名中的点数):
在用户名中包含点会产生一些使用
chown
scipts问题,它仍然接受点作为用户名和组名之间的分隔符。 如果chown
仍接受点,则会有使用此表示法的脚本,如果用户名包含点,则会中断。我建议保持当前默认值(可以通过本地配置覆盖),直到
chown
停止接受点作为分隔符。
并且chown
仍然接受点作为分隔符,尽管它不再被记录。 我同意POSIX兼容性应该占上风,并且我确实在几个系统上使用包含点的用户名而没有任何不利影响。