Linuxのユーザー名にはどの文字を使用する必要がありますか?


39

ドメイン名にちなんだ名前のユーザーアカウントを作成したい。adduserは、ユーザー名がNAME_REGEX正規表現と一致する必要があると文句を言います。

adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

苦情なしにuseraddを使用してユーザーを追加できます。正規表現を変更して許可しない理由.-および_

どの文字が問題を引き起こし、ユーザー名に使用すべきではありませんか?

これがデフォルトですNAME_REGEX

NAME_REGEX="^[a-z][-a-z0-9]*\$"

1
最初の文字でない限り、NAME_REGEXすでに受け入れ-ていることに注意してください。
リングØSep

なぜ追加しないの.ですか?.またはという名前のユーザーを考えます..。次に、rmそのユーザーという名前..
ジョン

1
@Jon rmは、ユーザーを削除するときに使用するコマンドではないため、問題ではありません。私..は、同様の理由で賢明な名前ではないことに同意しますがrm、それらの1つではありません。
toon81

回答:


26

あなたへの私のアドバイスは、デフォルトのNAME_REGEXが推奨する標準に従うことです。実際には、* NIXの下のユーザー名にはほとんど何でも入れることができますが、仮定を行うライブラリコードで奇妙な問題が発生する可能性があります。適例:

http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html

あなたへの私の質問:異常な句読点を取り除いた場合、互いに衝突する多くのドメイン名がありますか?たとえば、ドメイン名として「QUALITY-ASSURANCE」と「QUALITYASSURANCE」の両方がありますか?そうでない場合は、通常とは異なる文字を削除して、ユーザー名として残っているものを使用するというポリシーを採用できます。

また、/ etc / passwd情報のGECOSフィールドの「実名」セクションを使用して、元の変更されていないドメイン名を保存することができ、スクリプトはそれを非常に簡単に抽出できます。


私が心配しているのは、予期せぬバグがランダムに発生することです。ピリオドを簡単に削除でき、名前の衝突の可能性はありませんが、-が問題を引き起こす可能性があります。それでもそれはかなりありそうにない。
エドハーバー

したがって、私が使用しているDebianシステムは、ユーザーwww-dataを使用しています。のように見えます-ユーザー名で使用しても問題ありません。
エドハーバー

実際、その正規表現はユーザー名に「-」を許可します!最初の文字はazである必要がありますが、ユーザー名の後続の文字は '-'、az、または0-9にできます。
steveha

ああ!あなたが正しい。私は余分を逃した-私がそれを見ていたとき。
エドハーバー

22

より具体的には、POSIX(「Unix用のポータブルオペレーティングシステムインターフェイス」)標準(IEEE Standard 1003.1 2008)は次のように述べています


3.431ユーザー名

ユーザーを識別するために使用される文字列。ユーザーデータベースも参照してください。POSIX.1-2008に準拠するシステム間で移植可能にするために、値は移植可能なファイル名文字セットの文字で構成されます。この<hyphen>文字は、ポータブルユーザー名の最初の文字として使用しないでください。


3.278ポータブルファイル名文字セット

The set of characters from which portable filenames are constructed.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -

この標準に準拠するユーザー名はすべてPOSIX準拠であり、安全である必要があります。


6
これは事実ですが、ユーザー名に大文字が含まれていることは一般的に嫌われています-大文字と小文字を区別するパスワードには十分な問題があり、ユーザー名の大文字と小文字を覚えなければならないのは、ユーザーがダウンしたときにそれらを蹴るだけです。(例外:ユーザー名の規則がALL UPPERCASE CHARACTERS。の場合)
voretaq7 14

1
POSIX.1-2017の時点で、これらの定義は少し移動しました。3.431ユーザー名は3.437ユーザー名、3.278ポータブルファイル名文字セットは3.282ポータブルファイル名文字セット
チャックウォルバー

@ voretaq7合法だと思うのは、ユーザー名の大文字小文字を保持することですが、サインインでは大文字と小文字を区別しません。したがって、ユーザー名はCatInTheHatですが、catinthehatまたはcatintheHATなどを指定してサインインできます。
StackOverflowUser

1

NAME_REGEXから、大文字と小文字のa〜zおよび0〜9の数字以外はすべて不良であると推定できます。


あなたが探している言葉は「推測」です。
wfaulkが

正規表現をもう一度見ると、-(最初の文字としてではなく)受け入れられます。また、デフォルトでは大文字は受け入れられないことに注意してください(gフラグがなく 、OPによって提供される正規表現にA-Z含まれませんNAME_REGEXNAME_REGEX="^[a-z][-a-z0-9]*\$"
18年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.