回答:
特に、ソースコードを参照してください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.$groupchown $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。