Warum sind Unterstriche in Benutzernamen in einigen Distributionen nicht erlaubt (Debian zum Beispiel)?

8

Warum wurde der Unterstrich als schlechtes Zeichen für Benutzernamen in Debian (und möglicherweise für andere Distributionen) angesehen, während er adduserin Ubuntu aus NAME_REGEX entfernt wurde?

Sam
quelle

Antworten:

7

POSIX spezifiziert die Verwendung eines tragbaren Satz von Zeichen für Benutzer- und Gruppennamen.
_ - .sind erlaubte Zeichen, NAME_REGEXprüft, ob der Benutzername nur angegebene Zeichen enthält. Die Distributionsentwickler legen fest, ob weitere Zeichen verweigert werden. Ubuntu verbietet beispielsweise die Verwendung .von standardmäßig.

Durch Hinzufügen dieser Einschränkung werden Interferenzen mit anderen Systemwerkzeugen vermieden, die Sonderzeichen interpretieren können. Denken Sie an die Variable $PATH, wenn Sie einen Benutzer mit dem Namen haben my:userund fügen Sie Ihr Home-Verzeichnis hinzu zu $PATH:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin

Die Verzeichnisse /home/myund user/binwürden (wahrscheinlich) nicht existieren. Weiter /etc/passwdhätte zwei :mehr als nötig.

Bearbeiten:
Debians adduser(Version 3.110) verwendet /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/zum Überprüfen von Benutzernamen, _ ist erlaubt, solange NAME_REGEXes nicht verbietet.

wedeln
quelle
1
Aber die Frage war _nicht :...
Josh
Ist das @ nicht auch in posix erlaubt, zumindest laut adduser
Sam
Und ja, während das erklärt, warum Sie nicht zulassen sollten: Es erklärt nicht, warum _ schlecht ist.
Sam
1
_ist standardmäßig erlaubt, siehe Bearbeiten. Ich habe ein Beispiel für den verbotenen Charakter gegeben :, um die möglichen Probleme damit aufzuzeigen.
wag
@ Sam, @ ist in POSIX nicht erlaubt, siehe askubuntu.com/a/405668/13482
Daniel Serodio
3

Eine ähnliche Frage wurde bereits beantwortet hier

Theoretisch können Sie fast jedes gewünschte ASCII-Zeichen als Benutzernamen verwenden. Um jedoch Fehler zu vermeiden, wie sie im obigen Artikel erwähnt wurden, können Sie diesen regulären Ausdruck festlegen, um bestimmte Probleme zu vermeiden.

tmow
quelle
Sie können weder :einen Zeilenumbruch noch ein Nullzeichen in einem Benutzernamen verwenden, selbst wenn Sie /etc/passwd(oder die meisten anderen Benutzerdatenbanken) manuell bearbeiten .
Gilles 'SO - hör auf böse zu sein'
@ Gilles ja du hast recht, ich habe die Antwort korrigiert, aber der Unterstrich ist in Ordnung, um auf die Frage zu antworten, dass NAME_REGEX da ist, um Fehler zu verhindern, aber es ist nicht als Standard festgelegt, da normalerweise einige dieser Zeichen erlaubt sind.
Tmow
0

Ich verwende Debian Squeeze und habe es geschafft, einen Benutzer mit Unterstrich zu erstellen adduser user_1. Warum sagen Sie, dass sie nicht erlaubt sind?

Tshepang
quelle
Vielleicht habe ich es falsch interpretiert. Ich habe mich gerade daran erinnert, /etc/adduser.conf auf einem Debian-Server bearbeitet zu haben, und NAME_REGEX (dh der nicht zugelassene Name Regex) enthielt einen Unterstrich. Es wurde dort jedoch kommentiert, aber ich denke, ich nahm an, dass es den Standard NAME_REGEX darstellt.
Sam
NAME_REGEXist der zulässige Namensregex, nicht der unzulässige Namensregex ... dh wenn ein Name übereinstimmt NAME_REGEX, ist er gültig.
Josh
Debian Lenny (stabil wie ich schreibe) hat nicht NAME_REGEXin /etc/adduser.confund die eingebaute Standardeinstellung verbietet _.
Gilles 'SO - hör auf böse zu sein'