Welche Zeichen sollte ich unter Linux in Benutzernamen verwenden oder nicht?

39

Ich möchte Benutzerkonten erstellen, die nach einem Domainnamen benannt sind. adduser beschwert sich, dass die Benutzernamen mit dem NAME_REGEXregulären Ausdruck übereinstimmen müssen .

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.

Ich kann die Benutzer mit useradd ohne Beanstandung hinzufügen. Gibt es einen Grund, warum ich den regulären Ausdruck nicht ändern sollte, um zuzulassen ., -und _?

Welche Zeichen verursachen Probleme und sollten in Benutzernamen nicht erlaubt sein?

Dies ist die Standardeinstellung NAME_REGEX.

NAME_REGEX="^[a-z][-a-z0-9]*\$"
Ed Haber
quelle
1
Beachten Sie, dass dies NAME_REGEXbereits akzeptiert wird -, solange es nicht das erste Zeichen ist.
Ring Ø
Warum nicht hinzufügen .? Betrachten Sie einen Benutzer namens .oder ... Dann rmbenannte dieser Benutzer ...
Jon
1
@ Jon ist kein Problem, da rmes sich nicht um den Befehl handelt, der beim Löschen eines Benutzers verwendet wird. Ich bin damit einverstanden, dass ..es aus ähnlichen Gründen keinen vernünftigen Namen gibt, aber es rmist keiner von diesen.
Toon81

Antworten:

26

Ich rate Ihnen, den vom Standard NAME_REGEX empfohlenen Standard zu befolgen. Sie können unter * NIX tatsächlich fast alles in einen Benutzernamen einfügen, es kann jedoch zu seltsamen Problemen mit Bibliothekscode kommen, bei denen Annahmen getroffen werden. Ein typisches Beispiel:

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

Meine Frage an Sie: Haben Sie viele Domain-Namen, die miteinander kollidieren würden, wenn Sie die ungewöhnliche Zeichensetzung entfernen würden? Haben Sie beispielsweise sowohl "QUALITY-ASSURANCE" als auch "QUALITYASSURANCE" als Domain-Namen? Wenn nicht, können Sie einfach die ungewöhnlichen Zeichen entfernen und den verbleibenden Benutzernamen verwenden.

Sie können auch den Abschnitt "realer Name" des GECOS-Felds in der Datei / etc / passwd verwenden, um den ursprünglichen, nicht geänderten Domänennamen zu speichern, und Skripte können ihn ziemlich einfach extrahieren.

Steveha
quelle
Es ist das zufällige Auftauchen von unerwarteten Fehlern, um das ich mir Sorgen mache. Ich kann die Punkte ziemlich leicht entfernen und habe immer noch keine Chance auf Namenskonflikte, aber das - könnte ein Problem verursachen. Trotzdem ist es ziemlich unwahrscheinlich.
Ed Haber
Das Debian-System, das ich benutze, verwendet also Benutzer-WWW-Daten. Es sieht also so aus - sollte in Ordnung sein, um in Benutzernamen verwendet zu werden.
Ed Haber
Tatsächlich erlaubt dieser reguläre Ausdruck '-' in Benutzernamen! Der erste Buchstabe muss az sein, nachfolgende Buchstaben der Benutzernamen können '-', az oder 0-9 sein.
Steveha
Ohh! Du hast recht. Ich habe das Extra verpasst - als ich es mir ansah.
Ed Haber
22

Der POSIX-Standard ("Portable Operating System Interface for Unix") (IEEE-Standard 1003.1 2008) besagt Folgendes :


3.431 Benutzername

Eine Zeichenfolge, mit der ein Benutzer identifiziert wird. Siehe auch Benutzerdatenbank. Der Wert setzt sich aus Zeichen aus dem Zeichensatz des portablen Dateinamens zusammen, um auf Systemen portierbar zu sein, die POSIX.1-2008 entsprechen. Das <hyphen>Zeichen sollte nicht als erstes Zeichen eines tragbaren Benutzernamens verwendet werden.


3.278 Zeichensatz für tragbare Dateinamen

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 . _ -

Jeder Benutzername, der diesem Standard entspricht, ist POSIX-konform und sollte sicher sein.

HopelessN00b
quelle
6
Obwohl dies zutrifft, ist es im Allgemeinen verpönt, Großbuchstaben in Benutzernamen zu verwenden. Die Leute haben genug Probleme mit Passwörtern, bei denen die Groß- und Kleinschreibung beachtet werden muss. (Ausnahme: Wenn Ihr Benutzername Konvention ist ALL UPPERCASE CHARACTERS.)
voretaq7
1
Ab POSIX.1-2017 haben sich diese Definitionen etwas verschoben. 3.431 Benutzername ist jetzt 3.437 Benutzername und 3.278 Zeichensatz für tragbare Dateinamen ist jetzt 3.282 Zeichensatz für tragbare Dateinamen
Chuck Wolber
@ voretaq7 Ich halte es für legitim, die Groß- und Kleinschreibung eines Benutzernamens beizubehalten, Anmeldungen jedoch unabhängig von der Groß- und Kleinschreibung. Ein Benutzername könnte also CatInTheHat sein, aber Sie müssen sich anmelden, um catinthehat oder catintheHAT oder was auch immer anzugeben.
StackOverflowUser
1

Aus der NAME_REGEX lässt sich ableiten, dass alles außer a bis z in Groß- und Kleinschreibung und der Zahl 0 bis 9 schlecht wäre.

wzzrd
quelle
Das gesuchte Wort ist "abgeleitet".
Wfaulk
Schauen Sie sich den regulären Ausdruck noch einmal an, er -wird ebenfalls akzeptiert (nur nicht als erstes Zeichen). Beachten Sie auch, dass standardmäßig Großbuchstaben nicht akzeptiert werden (es gibt kein gFlag, noch ist er A-Zim NAME_REGEXNAME_REGEX="^[a-z][-a-z0-9]*\$"
regulären Ausdruck