groupadd允许使用哪些组名?


13

我按照这些指示信息来构建Shadow,它提供了groupadd命令。我现在在尝试此操作时遇到错误:

$ groupadd automake1.10
groupadd: 'automake1.10' is not a valid group name

我检查了字母数字名称,它们正常工作。

Answers:


20

具体参见源代码libmisc/chkname.c。Shadow非常保守:名称必须与正则表达式匹配,[_a-z][-0-9_a-z]*\$?并且最多可以包含GROUP_NAME_MAX_LENGTH字符(配置选项,默认为16;用户名通常最多可以包含32个字符,这取决于编译时的确定)。

Debian放松了很多检查。从挤压开始,除空格外,:都不允许使用其他任何东西。请参阅错误#264879错误#377844

POSIX要求允许使用大小写字母,数字和._-例如文件名)。如果您不关心可移植性,则POSIX不会设置任何限制。许多建议的限制来自使用情况:

  • 冒号,换行符和null都是正确的;您只是不能在/etc/passwd或中使用它们/etc/group
  • 由单纯数字的名字是一个坏主意- chown而且chgrp应该以对待数字序列作为名字,如果它在用户/组数据库,但其他应用程序可以将任何数量的数字ID。
  • 强烈建议不要使用用户名的缩写-或“ a” .,因为许多应用程序希望能够传递$user.$group给外部实用程序(例如chown $user.$group /path/to/file)¹。.组名中的A 应该会减少麻烦,但是我还是建议不要这样做。
  • / 也可能会引起麻烦,因为某些程序希望能够使用文件名中的用户名。
  • 外壳将扩展的任何字符都可能具有风险。
  • 如果您不希望与可能使用不同编码的系统共享,则可以使用非ASCII字符。

¹ 所有现代实现都希望使用chown $user:$group,但是支持chown $user.$group向后兼容,并且有太多的应用程序通过点来删除该兼容性支持。


重新chown参数:当前的语法,至少在GNU的coreutils,是user:group与点被接受仅出于兼容性。一个可以使用j.smith:j.smith
2011年

1
@grawity:不仅是GNU coreutils,问题还不在于chown它本身,而是现有的脚本和其他程序在调用chown $user.$group而不是chown $user:$group-即使chown实现尝试做正确的事情,某些情况本质上也是模棱两可的。
吉尔斯(Gilles)“所以,别再邪恶了”,

1

如果您喜欢冒险,可以/etc/group直接编辑并输入所需的任何组名称。此外,这还具有额外的好处:遇到@Gilles提到的问题之一时,您可能将无法加载编辑器来解决问题,甚至根本无法登录-为您提供恢复损坏的系统方面的宝贵经验!


5
/etc/gshadow添加组时不要忘记进行编辑。另外,请使用vigr(8)而不是直接编辑文件。
camh 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.