groupadd 允许的组名是什么?

tsh*_*ang 14 linux users group useradd

我按照这些说明构建了 Shadow,它提供了groupadd命令。尝试此操作时,我现在收到错误消息:

$ groupadd automake1.10
groupadd: 'automake1.10' is not a valid group name
Run Code Online (Sandbox Code Playgroud)

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

Gil*_*il' 22

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

Debian 放宽了很多检查。至于挤压,除了空格之外的任何东西:都是允许的。请参阅错误 #264879错误 #377844

POSIX要求允许大小写、数字和._-如文件名中的任何一种)的字母。如果您不关心可移植性,POSIX 不会设置任何限制。许多推荐的限制来自使用:

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

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