Linux
groupadd 允許的組名是什麼?
我按照這些說明建構了提供**
groupadd
**命令的 Shadow。我現在在嘗試這個時遇到錯誤:$ groupadd automake1.10 groupadd: 'automake1.10' is not a valid group name
我檢查了字母數字名稱,它們工作正常。
請參閱原始碼,特別是
libmisc/chkname.c
. Shadow 非常保守:名稱必須與正則表達式匹配,[_a-z][-0-9_a-z]*\$?
並且最多可以有GROUP_NAME_MAX_LENGTH
字元長(配置選項,預設為 16;使用者名通常最多可包含 32 個字元,取決於編譯時確定)。Debian 放鬆了很多檢查。至於擠壓,除了空白之外的任何東西
:
都是允許的。請參閱錯誤 #264879和錯誤 #377844。POSIX要求允許字母大小寫、數字和
._-
(如文件名)。如果您不關心可移植性,POSIX 不會設置任何限制。一些建議的限制來自使用:
- 冒號、換行符和空值是正確的;你只是不能在
/etc/passwd
or中使用它們/etc/group
。- 僅由數字組成的名稱是個壞主意——如果數字序列在使用者/組數據庫中
chown
,chgrp
則應該將其視為名稱,但其他應用程序可能會將任何數字視為數字 id。- 強烈建議不要在使用者名中使用首字母
-
或 a.
,因為許多應用程序希望能夠傳遞$user.$group
給外部實用程序(例如chown $user.$group /path/to/file
)¹。組名中的A.
應該會減少麻煩,但我仍然建議不要這樣做。/
也可能會造成麻煩,因為某些程序希望能夠在文件名中使用使用者名。- shell 會擴展的任何字元都可能有風險。
- 如果您不關心與可能使用不同編碼的系統共享,非 ASCII 字元應該沒問題。
¹所有現代實現都期望
chown $user:$group
,但支持chown $user.$group
向後兼容性,並且有太多應用程序傳遞一個點來刪除該兼容性支持。