Antworten:
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.
_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.
: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?
NAME_REGEXist der zulässige Namensregex, nicht der unzulässige Namensregex ... dh wenn ein Name übereinstimmt NAME_REGEX, ist er gültig.
NAME_REGEXin /etc/adduser.confund die eingebaute Standardeinstellung verbietet _.
_nicht:...