GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué los nombres de usuario de Linux no pueden comenzar con números?

Algunos comandos (por ejemplo, chown ) puede aceptar un nombre de usuario o una identificación de usuario numérica, por lo que permitir nombres de usuario totalmente numéricos rompería eso.

Una regla para permitir nombres que comienzan con un número y contienen algo de alfa probablemente se consideró que no valía la pena el esfuerzo; en cambio, solo hay un requisito para comenzar con un carácter alfabético.

Editar:

Parece de las otras respuestas que algunas distribuciones han subvertido esta limitación; en este caso, según la documentación de GNU Core Utils:

POSIX requiere que estos comandos primero intenten resolver la cadena especificada como un nombre, y solo una vez que falle, luego intente interpretarlo como una 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.

Agregar un usuario llamado '0' solo sería buscar problemas (UID 0 ==usuario raíz). Sin embargo, tenga en cuenta que los argumentos de ID de grupo/usuario pueden estar precedidos por un '+' para forzar su interpretación como un número entero.


aquí hay una prueba en ubuntu 14.04 usando números:

[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

y uno usando 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

Esta es probablemente la peor idea que tuve:

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

Claramente, puede agregar dicho usuario, aunque no estoy seguro de que sea una buena idea a largo plazo.


Un nombre de usuario *Nix es generalmente una cadena de 32 caracteres creada por la utilidad useradd . Esto es, como dijiste, un resultado directo de los primeros estándares de Unix (BSD técnicamente). Según la página de manual de FreeBSD passwd(5) :

El nombre de inicio de sesión no debe comenzar con un guión (`-'), y no puede contener caracteres de 8 bits, tabuladores o espacios, ni ninguno de estos símbolos:`,:+&#%^()[email protected]~*? <>=|/"'. El símbolo de dólar (`$') solo se permite como el último carácter para usar con Samba. Ningún campo puede contener dos puntos (`:') ya que se ha usado históricamente para separar los campos en el usuario base de datos.

Ciertos sistemas *Nix solían arrojar errores oscuros cuando se les presentaban caracteres especiales en los nombres de usuario, por lo que, finalmente, se prohibieron los caracteres especiales. En la mayoría de los sistemas *Nix modernos sería relativamente fácil cambiar el passwd /useradd utilidades para admitir nombres de usuario de caracteres especiales, pero la mayoría de las personas dudan en cambiar algo tan poco importante, ya que tendría poco efecto y causaría incompatibilidad con versiones anteriores.

EDITAR:
Como dijo Adonis, de hecho es posible hacer esto en una distribución moderna de Linux, sin embargo, no es aconsejable (especialmente cuando se encuentran con programas estandarizados o heredados).


Linux
  1. 4 consejos para conectar a un familiar mayor con Linux

  2. 3 cosas útiles que puedes hacer con la herramienta IP en Linux

  3. ¿Por qué puedo iniciar sesión con contraseñas parciales?

  4. Cómo evaluar cadenas como números en Bash

  5. La ordenación de Linux no funciona con números flotantes negativos

Cualquiera puede dibujar en Linux con Inkscape

Por qué me quedo con xterm

Por qué me enamoré de Antergos Linux

Asegure su privacidad en línea con estas distribuciones de Linux

¿Por qué ejecutar un comando de shell de Linux con '&'?

¿Por qué no puedo matar este proceso en Linux?