GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi les noms d'utilisateur Linux ne peuvent-ils pas commencer par des chiffres ?

Certaines commandes (par exemple chown ) peut accepter un nom d'utilisateur ou un ID utilisateur numérique, donc autoriser les noms d'utilisateur entièrement numériques casserait cela.

Une règle autorisant les noms commençant par un nombre et contenant un certain alpha n'était probablement pas considérée comme la valeur de l'effort ; à la place, il suffit de commencer par un caractère alpha.

Modifier :

Il ressort des autres réponses que certaines distributions ont contourné cette limitation ; dans ce cas, selon la documentation de GNU Core Utils :

POSIX exige que ces commandes tentent d'abord de résoudre la chaîne spécifiée en tant que nom, et seulement une fois que cela échoue, puis essaient de l'interpréter comme 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'ajout d'un utilisateur nommé '0' ne ferait que poser des problèmes (UID 0 ==utilisateur root). Cependant, notez que les arguments d'ID de groupe/utilisateur peuvent être précédés d'un '+' pour forcer leur interprétation en tant qu'entier.


voici un test sur ubuntu 14.04 utilisant des nombres :

[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

et un utilisant 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

C'est probablement la pire idée que j'ai eu :

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

Il est clair que vous pouvez ajouter un tel utilisateur, bien que je ne sois pas sûr que ce soit une bonne idée à long terme.


Un nom d'utilisateur *Nix est généralement une chaîne de 32 caractères créée par l'utilitaire useradd . C'est, comme vous l'avez dit, un résultat direct des premiers standards Unix (BSD techniquement). Selon la page de manuel FreeBSD passwd(5) :

Le nom de connexion ne doit pas commencer par un trait d'union (`-') et ne peut pas contenir de caractères 8 bits, de tabulations ou d'espaces, ni aucun de ces symboles :`,:+&#%^()[email protected]~* ? <>=|/"'. Le symbole dollar (`$') n'est autorisé que comme dernier caractère à utiliser avec Samba. Aucun champ ne peut contenir deux-points (`:') car il a été utilisé historiquement pour séparer les champs dans l'utilisateur base de données.

Certains systèmes *Nix lançaient des erreurs obscures lorsqu'ils étaient présentés avec des caractères spéciaux dans les noms d'utilisateur, donc finalement, les caractères spéciaux ont été interdits. Dans la plupart des systèmes *Nix modernes, il serait relativement facile de changer le passwd /useradd utilitaires pour prendre en charge les noms d'utilisateur de caractères spéciaux, mais la plupart des gens hésitent à modifier une chose aussi peu importante, car cela aurait peu d'effet et entraînerait une incompatibilité ascendante.

MODIF :
Comme Adonis l'a dit, il est en fait possible de le faire dans une distribution Linux moderne, mais c'est déconseillé (surtout lorsque vous rencontrez des programmes standardisés ou hérités).


Linux
  1. Jouez à un jeu mathématique amusant avec les commandes Linux

  2. Pourquoi je m'en tiens à xterm

  3. Pourquoi je suis tombé amoureux d'Antergos Linux

  4. Comment évaluer les chaînes en tant que nombres dans Bash

  5. Le tri Linux ne fonctionne pas avec les nombres flottants négatifs

Tout le monde peut dessiner sur Linux avec Inkscape

Protégez votre confidentialité en ligne avec ces distributions Linux

Linux pourquoi ne puis-je pas diriger le résultat vers rm?

Édition à distance avec un éditeur local (Linux)

Comment puis-je voir plus de mon historique dans Screen sous Linux ?

Comment puis-je déplacer des fichiers avec xargs sous Linux ?