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