Některé příkazy (např. chown
) může přijímat uživatelské jméno nebo číselné ID uživatele, takže povolení pouze číselných uživatelských jmen by to narušilo.
Pravidlo povolující jména, která začínají číslem a obsahují nějaké alfa bylo pravděpodobně považováno za nestálé; místo toho je pouze požadavek začínat znakem alfa.
Upravit:
Z ostatních odpovědí se zdá, že některá distra toto omezení rozvrátila; v tomto případě podle dokumentace GNU Core Utils:
POSIX vyžaduje, aby se tyto příkazy nejprve pokusily přeložit zadaný řetězec jako název, a teprve poté, co selže, se jej pokusily interpretovat jako 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.
Přidání uživatele s názvem '0' by si jen vyžádalo problém (UID 0 ==uživatel root). Pamatujte však, že argumentům ID skupiny/uživatele může předcházet '+', aby se vynutila jejich interpretace jako celé číslo.
zde je test na ubuntu 14.04 pomocí čísel:
[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
a jeden používající 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
Tohle je asi ten nejhorší nápad, co jsem měl:
[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]~*?<>=|
Je jasné, že takového uživatele můžete přidat, i když si nejsem jistý, zda je to z dlouhodobého hlediska dobrý nápad.
Uživatelské jméno *Nix je obecně řetězec dlouhý 32 znaků vytvořený nástrojem useradd
. Toto je, jak jste řekl, přímý výsledek raných unixových (technicky BSD) standardů. Podle Man Stránka FreeBSD passwd(5)
:
Přihlašovací jméno nesmí začínat pomlčkou (`-') a nesmí obsahovat 8bitové znaky, tabulátory, mezery ani žádný z těchto symbolů:`,:+%^()[email protected]~*? <>=|/"'. Symbol dolaru (`$') je povolen pouze jako poslední znak pro použití se Sambou. Žádné pole nesmí obsahovat dvojtečku (`:'), protože to bylo historicky používáno k oddělení polí v uživateli databáze.
Určité *Nix systémy házely nejasné chyby, když byly prezentovány se speciálními znaky v uživatelských jménech, takže nakonec byly speciální znaky zakázány. Ve většině moderních *Nix systémů by bylo relativně snadné změnit passwd
/useradd
utilit na podporu uživatelských jmen speciálních znaků, ale většina lidí váhá změnit tak nedůležitou věc, protože by to mělo malý účinek a způsobilo by to zpětnou nekompatibilitu.
UPRAVIT:
Jak řekl Adonis, je to ve skutečnosti možné udělat v moderní distribuci Linuxu, ale je to nerozumné (zejména při setkání se standardizovanými nebo staršími programy).