Ich möchte Benutzerkonten erstellen, die nach einem Domainnamen benannt sind. adduser beschwert sich, dass die Benutzernamen mit dem NAME_REGEX
regulä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]*\$"
linux
user-accounts
Ed Haber
quelle
quelle
NAME_REGEX
bereits akzeptiert wird-
, solange es nicht das erste Zeichen ist..
? Betrachten Sie einen Benutzer namens.
oder..
. Dannrm
benannte dieser Benutzer..
.rm
es 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 esrm
ist keiner von diesen.Antworten:
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.
quelle
Der POSIX-Standard ("Portable Operating System Interface for Unix") (IEEE-Standard 1003.1 2008) besagt Folgendes :
3.431 Benutzername
3.278 Zeichensatz für tragbare Dateinamen
Jeder Benutzername, der diesem Standard entspricht, ist POSIX-konform und sollte sicher sein.
quelle
ALL UPPERCASE CHARACTERS
.)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.
quelle
-
wird ebenfalls akzeptiert (nur nicht als erstes Zeichen). Beachten Sie auch, dass standardmäßig Großbuchstaben nicht akzeptiert werden (es gibt keing
Flag, noch ist erA-Z
imNAME_REGEX
NAME_REGEX="^[a-z][-a-z0-9]*\$"