GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum können Linux-Benutzernamen nicht mit Zahlen beginnen?

Manche Befehle (zB chown ) kann entweder einen Benutzernamen oder eine numerische Benutzer-ID akzeptieren, also würde das Zulassen von rein numerischen Benutzernamen das brechen.

Eine Regel, Namen zuzulassen, die mit einer Zahl beginnen und etwas Alpha enthalten, wurde wahrscheinlich als nicht der Mühe wert erachtet; stattdessen muss lediglich mit einem Buchstaben begonnen werden.

Bearbeiten:

Aus den anderen Antworten geht hervor, dass einige Distributionen diese Einschränkung umgangen haben; in diesem Fall gemäß der GNU Core Utils-Dokumentation:

POSIX erfordert, dass diese Befehle zuerst versuchen, den angegebenen String als Namen aufzulösen, und nur wenn das fehlschlägt, dann versuchen, ihn als ID zu interpretieren.

$ useradd 1000   # on most systems this will fail with:
                 # useradd: invalid user name '1000'
$ mkdir /home/1000
$ chown -R 1000 /home/1000   # This will first try to map
    # to username "1000", but this may easily be misinterpreted.

Das Hinzufügen eines Benutzers namens '0' würde nur nach Ärger fragen (UID 0 ==Root-Benutzer). Beachten Sie jedoch, dass Gruppen-/Benutzer-ID-Argumenten ein '+' vorangestellt werden kann, um ihre Interpretation als ganze Zahl zu erzwingen.


Hier ist ein Test auf Ubuntu 14.04 mit Zahlen:

[email protected]:~# useradd 232
[email protected]:~# mkdir /home/232
[email protected]:~# chown 232.232 /home/232
[email protected]:~# passwd 232
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
[email protected]:~# login
c2 login: 232
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 2.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


$ 
$ whoami
232

und eine mit Unicode U+1F600 -

[email protected]:~# useradd 
[email protected]:~# mkdir /home/
[email protected]:~# chown . /home/
[email protected]:~# passwd 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
[email protected]:~# login
c2 login: 
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 2.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

$ whoami

Das ist wahrscheinlich die schlechteste Idee, die ich hatte:

[email protected]:~# useradd '&#%^()[email protected]~*?<>=|'
[email protected]:~# passwd '&#%^()[email protected]~*?<>=|'
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
[email protected]:~# mkdir '/home/&#%^()[email protected]~*?<>=|'
[email protected]:~# chown '&#%^()[email protected]~*?<>=|.&#%^()[email protected]~*?<>=|' '/home/&#%^()[email protected]~*?<>=|'
[email protected]:~# login
c2 login: &#%^()[email protected]~*?<>=|     
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)
**** text removed ****
applicable law.

$ whoami
&#%^()[email protected]~*?<>=|

Natürlich können Sie einen solchen Benutzer hinzufügen, obwohl ich nicht sicher bin, ob dies auf lange Sicht eine gute Idee ist.


Ein *Nix-Benutzername ist im Allgemeinen eine 32 Zeichen lange Zeichenfolge, die vom Dienstprogramm useradd erstellt wird . Dies ist, wie Sie sagten, ein direktes Ergebnis früher Unix-Standards (BSD-technisch). Laut der FreeBSD-Manpage passwd(5) :

Der Anmeldename darf nicht mit einem Bindestrich (`-') beginnen und darf keine 8-Bit-Zeichen, Tabulatoren oder Leerzeichen oder eines der folgenden Symbole enthalten:`,:+&#%^()[email protected]~*? <>=|/"'. Das Dollarzeichen (`$') ist nur als letztes Zeichen für die Verwendung mit Samba erlaubt. Kein Feld darf einen Doppelpunkt (`:') enthalten, da dies historisch verwendet wurde, um die Felder im Benutzer zu trennen Datenbank.

Bestimmte *Nix-Systeme haben früher obskure Fehler ausgegeben, wenn Sonderzeichen in Benutzernamen angezeigt wurden, sodass die Sonderzeichen schließlich verboten wurden. In den meisten modernen *Nix-Systemen wäre es relativ einfach, die passwd zu ändern /useradd Dienstprogramme zur Unterstützung von Benutzernamen mit Sonderzeichen, aber die meisten Leute zögern, eine so unwichtige Sache zu ändern, da dies wenig Wirkung hätte und eine Abwärtsinkompatibilität verursachen würde.

BEARBEITEN:
Wie Adonis sagte, ist dies in einer modernen Linux-Distribution zwar möglich, jedoch nicht ratsam (insbesondere, wenn auf standardisierte oder veraltete Programme gestoßen wird).


Linux
  1. Warum kann ich mich mit Teilpasswörtern anmelden?

  2. Die Linux-Sortierung funktioniert nicht mit negativen Gleitkommazahlen

  3. Linux, warum kann ich find result nicht an rm weiterleiten?

  4. Können Sie Linux-Anwendungen mit Xamarin entwickeln?

  5. Warum einen Linux-Shell-Befehl mit '&' ausführen?

Jeder kann mit Inkscape unter Linux zeichnen

4 Tipps, um einen älteren Verwandten mit Linux online zu bringen

3 nützliche Dinge, die Sie mit dem IP-Tool in Linux tun können

Schützen Sie Ihre Online-Privatsphäre mit diesen Linux-Distributionen

Wie kann ich Dateien mit xargs unter Linux verschieben?

Warum kann mv nicht mit der Existenz eines gleichnamigen Verzeichnisses im Ziel umgehen?