Warum wurde der Unterstrich als schlechtes Zeichen für Benutzernamen in Debian (und möglicherweise für andere Distributionen) angesehen, während er adduser
in Ubuntu aus NAME_REGEX entfernt wurde?
POSIX spezifiziert die Verwendung eines tragbaren Satz von Zeichen für Benutzer- und Gruppennamen.
_ - .
sind erlaubte Zeichen, NAME_REGEX
prü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:user
und 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/my
und user/bin
würden (wahrscheinlich) nicht existieren. Weiter /etc/passwd
hä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_REGEX
es nicht verbietet.
_
nicht:
..._
ist standardmäßig erlaubt, siehe Bearbeiten. Ich habe ein Beispiel für den verbotenen Charakter gegeben:
, um die möglichen Probleme damit aufzuzeigen.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.
quelle
:
einen Zeilenumbruch noch ein Nullzeichen in einem Benutzernamen verwenden, selbst wenn Sie/etc/passwd
(oder die meisten anderen Benutzerdatenbanken) manuell bearbeiten .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?quelle
NAME_REGEX
ist der zulässige Namensregex, nicht der unzulässige Namensregex ... dh wenn ein Name übereinstimmtNAME_REGEX
, ist er gültig.NAME_REGEX
in/etc/adduser.conf
und die eingebaute Standardeinstellung verbietet_
.