Answers:
具体参见源代码libmisc/chkname.c
。Shadow非常保守:名称必须与正则表达式匹配,[_a-z][-0-9_a-z]*\$?
并且最多可以包含GROUP_NAME_MAX_LENGTH
字符(配置选项,默认为16;用户名通常最多可以包含32个字符,这取决于编译时的确定)。
Debian放松了很多检查。从挤压开始,除空格外,:
都不允许使用其他任何东西。请参阅错误#264879和错误#377844。
POSIX要求允许使用大小写字母,数字和._-
(例如文件名)。如果您不关心可移植性,则POSIX不会设置任何限制。许多建议的限制来自使用情况:
/etc/passwd
或中使用它们/etc/group
。chown
而且chgrp
应该以对待数字序列作为名字,如果它在用户/组数据库,但其他应用程序可以将任何数量的数字ID。-
或“ a” .
,因为许多应用程序希望能够传递$user.$group
给外部实用程序(例如chown $user.$group /path/to/file
)¹。.
组名中的A 应该会减少麻烦,但是我还是建议不要这样做。/
也可能会引起麻烦,因为某些程序希望能够使用文件名中的用户名。¹ 所有现代实现都希望使用chown $user:$group
,但是支持chown $user.$group
向后兼容,并且有太多的应用程序通过点来删除该兼容性支持。
chown
它本身,而是现有的脚本和其他程序在调用chown $user.$group
而不是chown $user:$group
-即使chown
实现尝试做正确的事情,某些情况本质上也是模棱两可的。
如果您喜欢冒险,可以/etc/group
直接编辑并输入所需的任何组名称。此外,这还具有额外的好处:遇到@Gilles提到的问题之一时,您可能将无法加载编辑器来解决问题,甚至根本无法登录-为您提供恢复损坏的系统方面的宝贵经验!
/etc/gshadow
添加组时不要忘记进行编辑。另外,请使用vigr(8)
而不是直接编辑文件。
chown
参数:当前的语法,至少在GNU的coreutils,是user:group
与点被接受仅出于兼容性。一个可以使用j.smith:j.smith
。