回答:
POSIX は、ユーザー名とグループ名のポータブル文字セットの使用法を指定しています。
_ - .は許可NAME_REGEXされた文字です。ユーザー名に指定された文字のみが含まれているかどうかを確認します。配布の開発者は、それ以上の文字が拒否されるかどうかを定義します。たとえば、Ubuntuは.デフォルトでの使用を禁止しています。
この制限を追加すると、特殊文字を解釈する可能性がある他のシステムツールとの干渉を回避できます。$PATH名前を持つユーザーmy:userがいて、ホームディレクトリを$PATH以下に追加する場合は、変数を考えてみてください。
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin
ディレクトリ/home/myとuser/bin(おそらく)存在しません。さらに、必要以上に/etc/passwd2つ:あります。
編集:
Debianのadduser(バージョン3.110)は使用しています/^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/ユーザ名をチェックするため、_ される限りとして許可されNAME_REGEX、それを禁止しません。
_デフォルトで許可されています。編集を参照してください。禁止されているキャラクターの例を挙げて、:問題の可能性を示しました。
理論的には、ほぼすべてのASCII文字をユーザー名として使用できますが、上記の記事で述べたようなある種のバグを回避するために、特定の問題を回避する正規表現を設定できます。
:ユーザーが/etc/passwd(または他のほとんどのユーザーデータベースを)手動で編集した場合でも、ユーザー名に、改行、またはnull文字を使用することはできません。
私はDebian Squeezeを使用しており、下線付きのユーザーを作成することができましたadduser user_1。なぜ許可されていないのですか?
NAME_REGEXある許可名の正規表現ではなく、許可されていない名前の正規表現...つまり名前が一致した場合NAME_REGEX、それが有効です。
NAME_REGEXで/etc/adduser.conf、そして組み込みのデフォルトは禁止_。
_ませんでした:...