Frage Welche Zeichen sollte ich in Benutzernamen auf Linux verwenden oder nicht?


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

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 Beschwerde hinzufügen. Gibt es einen Grund, dass ich den regulären Ausdruck nicht modifizieren sollte ., - und _?

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

Dies ist der Standardwert NAME_REGEX.

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

37
2017-10-09 20:06


Ursprung


Beachten Sie, dass NAME_REGEX nimmt schon an - solange es nicht das erste Zeichen ist. - Ring Ø
Warum nicht hinzufügen? .? Betrachten Sie einen Benutzer namens . oder ... Dann, rm dieser Benutzer heißt ... - Jon


Antworten:


Mein Rat an Sie ist, dem vom Standard NAME_REGEX empfohlenen Standard zu folgen. Sie können tatsächlich fast alles in einen Benutzernamen unter * NIX einfügen, aber Sie können ungerade Probleme mit Bibliothekscode, der Annahmen macht. Fallbeispiel:

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 Interpunktion entfernen würden? Haben Sie zum Beispiel sowohl "QUALITY-ASSURANCE" als auch "QUALITYASSURANCE" als Domain-Namen? Wenn nicht, könnten Sie einfach eine Strategie anwenden, die ungewöhnlichen Zeichen zu entfernen und den verbleibenden Benutzernamen zu verwenden.

Sie können auch den "echten Namen" Abschnitt des GECOS-Feld in der / etc / passwd-Information, um den ursprünglichen, nicht modifizierten Domänennamen zu speichern, und Skripte könnten ihn ziemlich einfach extrahieren.


26
2017-10-09 20:57



Es ist der Lauf zu zufälligen unerwarteten Bugs, um die ich mir Sorgen mache. Ich kann die Perioden ziemlich leicht entfernen und habe noch keine Chance auf Namenskonflikte, aber die - könnte ein Problem verursachen. Trotzdem ist es ziemlich unwahrscheinlich. - Ed Haber
Das Debian-System, das ich verwende, benutzt einen Benutzer www-data. So sieht es aus - sollte in Benutzernamen verwendet werden. - Ed Haber
Eigentlich erlaubt dieser reguläre Ausdruck '-' in Benutzernamen! Der erste Buchstabe muss a-z sein, aber nachfolgende Buchstaben der Benutzernamen können "-", a-z oder 0-9 sein. - steveha
Ohh! Du hast recht. Ich habe das Extra vermisst - als ich es sah. - Ed Haber


Genauer gesagt, die POSIX ("Portable Operating System Interface für Unix") Standard (IEEE Standard 1003.1 2008) Staaten:


3.431 Benutzername

Eine Zeichenfolge, die zur Identifizierung eines Benutzers verwendet wird. Siehe auch Benutzerdatenbank. Um portierbar auf Systemen zu sein, die POSIX.1-2008 entsprechen, besteht der Wert aus Zeichen aus dem Zeichensatz für tragbare Dateinamen. Das <hyphen> Das Zeichen sollte nicht als erstes Zeichen eines tragbaren Benutzernamens verwendet werden.


3.278 Tragbarer Dateiname Zeichensatz

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-kompatibel und sollte sicher sein.


18
2018-02-25 21:21



Während dies wahr ist, ist es allgemein verpönt, Großbuchstaben in Benutzernamen zu haben - Leute haben genug Probleme mit Groß-und Kleinschreibung Passwörter, und machen sie sich erinnern, Groß-und Kleinschreibung in ihren Benutzernamen ist nur Tritt sie, wenn sie unten sind. (Ausnahme: Wenn Ihre Benutzernamenkonvention ist ALL UPPERCASE CHARACTERS.) - voretaq7
Ab POSIX.1-2017 haben sich diese Definitionen etwas verschoben. 3.431 Benutzername ist jetzt 3.437 Benutzername und 3.278 Portable Dateiname Zeichensatz ist jetzt 3.282 Tragbarer Dateiname Zeichensatz - Chuck Wolber


Aus dem NAME_REGEX kann abgeleitet werden, dass alles außer a bis z in Groß- und Kleinschreibung und die Zahl 0 bis 9 schlecht wäre.


1
2017-10-09 20:24



Das Wort, nach dem Sie suchen, ist "abgeleitet". - wfaulk
So wahr. :-) Danke, verpasst das ... - wzzrd
Schau dir die Regex noch einmal an, - wird auch akzeptiert (nur nicht als erstes Zeichen). Beachten Sie auch, dass standardmäßig Großbuchstaben nicht akzeptiert werden (es gibt keine g Flagge, noch ist es A-Z inbegriffen inNAME_REGEX  Regex vom OP zur Verfügung gestellt. NAME_REGEX="^[a-z][-a-z0-9]*\$" - SherylHohman