GNU/Linux >> Linux Esercitazione >  >> Linux

Perché i nomi utente Linux non possono iniziare con numeri?

Alcuni comandi (es. chown ) può accettare sia un nome utente che un ID utente numerico, quindi consentire nomi utente interamente numerici lo interromperebbe.

Una regola per consentire nomi che iniziano con un numero e contengono un po' di alfa è stata probabilmente ritenuta non degna dello sforzo; invece c'è solo un requisito per iniziare con un carattere alfa.

Modifica:

Sembra dalle altre risposte che alcune distro abbiano sovvertito questa limitazione; in questo caso, secondo la documentazione di GNU Core Utils:

POSIX richiede che questi comandi tentino prima di risolvere la stringa specificata come un nome e, solo una volta che fallisce, provino a interpretarla come un ID.

$ 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.

L'aggiunta di un utente chiamato "0" significherebbe solo creare problemi (UID 0 ==utente root). Tuttavia, tieni presente che gli argomenti ID gruppo/utente possono essere preceduti da un '+' per forzare la loro interpretazione come numero intero.


ecco un test su Ubuntu 14.04 usando i numeri:

[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

e uno che usa 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

Questa è probabilmente la peggiore idea che ho avuto:

[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]~*?<>=|

Chiaramente puoi aggiungere un utente di questo tipo, anche se non sono sicuro che sia una buona idea a lungo termine.


Un nome utente *Nix è generalmente una stringa di 32 caratteri creata dall'utilità useradd . Questo è, come hai detto, un risultato diretto dei primi standard Unix (BSD tecnicamente). Secondo la pagina man di FreeBSD passwd(5) :

Il nome di accesso non deve iniziare con un trattino (`-') e non può contenere caratteri a 8 bit, tabulazioni o spazi o uno qualsiasi di questi simboli:`,:+&#%^()[email protected]~*? <>=|/"'. Il simbolo del dollaro ('$') è consentito solo come ultimo carattere per l'uso con Samba. Nessun campo può contenere i due punti (`:') poiché questo è stato utilizzato storicamente per separare i campi nell'utente database.

Alcuni sistemi *Nix erano soliti generare errori oscuri quando venivano presentati caratteri speciali nei nomi utente, quindi alla fine i caratteri speciali furono vietati. Nella maggior parte dei moderni sistemi *Nix sarebbe relativamente facile cambiare il passwd /useradd utility per supportare nomi utente di caratteri speciali, ma la maggior parte delle persone è riluttante a modificare una cosa così poco importante, poiché avrebbe scarso effetto e causerebbe incompatibilità con le versioni precedenti.

MODIFICA:
Come ha affermato Adonis, è infatti possibile farlo in una moderna distribuzione Linux, tuttavia è sconsigliato (soprattutto quando si incontrano programmi standardizzati o legacy).


Linux
  1. Gioca a un divertente gioco di matematica con i comandi Linux

  2. Perché mi attengo a xterm

  3. Perché mi sono innamorato di Antergos Linux

  4. Perché posso accedere con password parziali??

  5. L'ordinamento di Linux non funziona con numeri float negativi

Chiunque può disegnare su Linux con Inkscape

Proteggi la tua privacy online con queste distribuzioni Linux

Puoi sviluppare applicazioni Linux con Xamarin?

Modifica remota con editor locale (Linux)

Come posso visualizzare più della mia cronologia in Screen su Linux?

Come posso spostare i file con xargs su Linux?