用户名中使用点的缺点是什么?

・4 分钟阅读

问题

我一个学生刚刚问到,在用户名字中有点(. )的缺点是什么,例如:john.doe


回答1

POSIX 状态关于用户名:

[… ]符合IEEEStd1003.12001的系统里,由可移植的文件名字符集中的字符组成,连字符不应用作用户名的第一个字符。

可移植文件名字符集:


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


a b c d e f g h i j k l m n o p q r s t u v w x y z


0 1 2 3 4 5 6 7 8 9 . _ -



还有 /etc/adduser.conf文件的文档手册 Manpage icon状态:


 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文档手册):

 
^[a-z][-a-z0-9]*$



 
  • 从小写字母开始,然后是任意数量的破折号,小写字母或数字,没有_,@或. 。

所以,

总之,点.可以用于Ubuntu用户名,NAME_REGEX只需要在/etc/adduser.conf中更改,它符合POSIX,在任何POSIX兼容程序的用户名中使用.应该没有任何问题。

在用户名中启用点

  • 在终端中运行此命令:

    
    sudo nano /etc/adduser.conf
    
    
    
    
  • 在文件的结尾处定位此行(靠近文件的末尾)

    
    #NAME_REGEX="^[a-z][-a-z0-9]*$"
    
    
    
    

    并替换为

    
    NAME_REGEX='^[a-z][-.a-z0-9]*$'
    
    
    
    

    注意-必须保持括号表达式[...]中的第一个字符,否则它将被视为指定范围a-z

  • 按Ctrl X,然后按Y,然后按Enter

  • 参考:


回答2

读取用户名的应用程序可能假定你的用户名遵循正则表达式,因此无法处理你的用户名。


回答3

在用户名中包含点会让chown在脚本中产生一些问题,chown仍然接受点作为用户名和组名之间的分隔符,如果chown仍然接受点,如果用户名包含点,则会让使用点符号的脚本中断。


讨论
Tianye profile image