一部のディストリビューション(Debianなど)でユーザー名にアンダースコアを使用できないのはなぜですか


8

では、アンダースコアがadduserUbuntuのNAME_REGEX から削除されているのに、なぜアンダースコアがDebian(およびおそらく他のディストリビューション)のユーザー名の悪い文字と見なされているのですか?

回答:


7

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/myuser/bin(おそらく)存在しません。さらに、必要以上に/etc/passwd2つ:あります。

編集:
Debianのadduser(バージョン3.110)は使用しています/^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/ユーザ名をチェックするため、_ される限りとして許可されNAME_REGEX、それを禁止しません。


1
しかし、問題はそうではあり_ませんでした:...
Josh

@はposixでは許可されていません。少なくともadduserによると
Sam

ええ、それはなぜあなたが許してはいけないのかを説明していますが、_が悪い理由を説明していません。
Sam

1
_デフォルトで許可されています。編集を参照してください。禁止されているキャラクターの例を挙げて、:問題の可能性を示しました。
2011年

@Sam、@は、POSIXで許可されていない、見askubuntu.com/a/405668/13482
ダニエルSerodio

3

同様の質問はすでにここで回答されています

理論的には、ほぼすべてのASCII文字をユーザー名として使用できますが、上記の記事で述べたようなある種のバグを回避するために、特定の問題を回避する正規表現を設定できます。


:ユーザーが/etc/passwd(または他のほとんどのユーザーデータベースを)手動で編集した場合でも、ユーザー名に、改行、またはnull文字を使用することはできません。
Gilles「SO-邪悪なことをやめ

@Gillesはい、正しいです。私は答えを修正しましたが、アンダースコアは問題ありません。NAME_REGEXはある種のバグを防ぐためにそこにありますが、通常はこれらの文字の一部が許可されているため、デフォルトとして設定されていません。
tmow '28年

0

私はDebian Squeezeを使用しており、下線付きのユーザーを作成することができましたadduser user_1。なぜ許可されていないのですか?


多分私はそれを誤解しました。Debianサーバーで/etc/adduser.confを編集したことを覚えており、NAME_REGEX(つまり、許可されていない名前の正規表現)にアンダースコアが含まれていました。しかし、そこでコメントされましたが、それはデフォルトのNAME_REGEXを表していると思いました。
Sam

NAME_REGEXある許可名の正規表現ではなく、許可されていない名前の正規表現...つまり名前が一致した場合NAME_REGEX、それが有効です。
Josh

Debianのレニー(I書き込みなどの安定は)持っていないNAME_REGEX/etc/adduser.conf、そして組み込みのデフォルトは禁止_
Gilles「SO-邪悪なことをやめよ」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.