GNU/Linux >> Znalost Linux >  >> Linux

Proč nemohou uživatelská jména Linuxu začínat čísly?

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


Linux
  1. Jak vyhodnotit řetězce jako čísla v Bash

  2. Jak mohu provést rozdělení s proměnnými v prostředí Linuxu?

  3. Linux, proč nemohu najít výsledek potrubím do rm?

  1. Vzdálená úprava pomocí lokálního editoru (Linux)

  2. Jak mohu přesouvat soubory pomocí xargs v Linuxu?

  3. Proč se mv nemůže vypořádat s existencí stejnojmenného adresáře v cíli?

  1. Zahrajte si zábavnou matematickou hru s příkazy Linuxu

  2. Proč se držím xtermu

  3. Proč jsem si zamiloval Antergos Linux