回答:
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/passwd
2つ:
あります。
編集:
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
、そして組み込みのデフォルトは禁止_
。
_
ませんでした:
...