回答:
特に、ソースコードを参照してくださいlibmisc/chkname.c
。シャドウはかなり保守的です。名前は正規表現[_a-z][-0-9_a-z]*\$?
と一致する必要があり、最大でGROUP_NAME_MAX_LENGTH
文字数になる可能性があります(設定オプション、デフォルトは16。ユーザー名は通常、コンパイル時の決定に従って最大32文字です)。
Debianはチェックを大幅に緩和します。squeezeの時点では、空白文字以外:
は許可されています。参照してくださいバグ#264879とバグ#377844を。
POSIXでは、大文字と小文字、数字、および._-
(ファイル名のように)許可する必要があります。移植性を気にしない場合、POSIXは制限を設定しません。いくつかの推奨される制限は、使用法に起因します。
/etc/passwd
またはで使用できません/etc/group
。chown
そしてchgrp
それは、ユーザー/グループデータベースにかどう名として数字列を扱うことになっているが、他のアプリケーションでは、数値IDとして任意の数を扱うことがあります。-
またはを.
強くお勧めしません。グループ名のA は問題が少ないはずですが、それでもお勧めしません。$user.$group
chown $user.$group /path/to/file
.
/
一部のプログラムではファイル名にユーザー名を使用できると想定しているため、トラブルも発生する可能性があります。¹ すべての近代的な実装は期待するchown $user:$group
が、サポートchown $user.$group
下位互換性のため、およびその互換性のサポートを削除するには、ドットを渡すそこにあまりにも多くのアプリケーションがあります。
chown
自体も問題ではありません。chown $user.$group
代わりに呼び出すのは既存のスクリプトや他のプログラムchown $user:$group
です。chown
実装が正しいことを行おうとしても、いくつかのケースでは本質的にあいまいです。
chown
議論:現在の構文は、少なくともGNU coreutilsでは、でありuser:group
、ドットは互換性のためにのみ受け入れられます。使用できますj.smith:j.smith
。