¿Por qué no se permiten guiones bajos en los nombres de usuario en algunas distribuciones (Debian, por ejemplo)?

8

Entonces, ¿por qué se ha considerado el guión bajo como un mal carácter para los nombres de usuario en Debian (y posiblemente otras distribuciones) mientras se ha eliminado de adduserNAME_REGEX en Ubuntu?

Sam
fuente

Respuestas:

7

POSIX especifica el uso de un conjunto portátil de caracteres para los nombres de usuarios y grupos.
_ - .son caracteres permitidos, NAME_REGEXcomprueba si el nombre de usuario solo contiene caracteres especificados. Los desarrolladores de distribución definen, si se deniegan más caracteres. Ubuntu, por ejemplo, prohíbe el uso de .forma predeterminada.

Agregar esta restricción evita la interferencia con otras herramientas del sistema, que pueden interpretar caracteres especiales. Piense en la variable $PATH, cuando tenga un usuario con el nombre my:usery agregue su directorio de inicio a $PATH:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin

Los directorios /home/myy user/bin(probablemente) no existen. Además, /etc/passwdtendría dos :más de lo necesario.

Editar:
los adduserusos /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/de Debian (versión 3.110) para verificar nombres de usuario, _ están permitidos siempre que NAME_REGEXno lo prohíban.

meneo
fuente
1
Pero la pregunta era sobre _no :...
Josh
¿No está permitido el @ también en posix, al menos según adduser?
Sam
Y sí, mientras eso explica por qué no deberías permitirlo: no explica por qué _ es malo.
Sam
1
_está permitido por defecto, ver la edición. Di un ejemplo del personaje prohibido :para mostrar los posibles problemas con él.
meneo
@Sam, @ no está permitido en POSIX, consulte askubuntu.com/a/405668/13482
Daniel Serodio
3

Una pregunta similar ya ha sido respondida aquí

Teóricamente, puede usar casi cualquier carácter ASCII que desee como nombre de usuario, pero, para evitar algún tipo de error, como el mencionado en el artículo anterior, puede establecer esa expresión regular que evite ciertos problemas.

tmow
fuente
No podrá usar :una nueva línea o un carácter nulo en un nombre de usuario incluso si edita /etc/passwd(o la mayoría de las demás bases de datos de usuarios) a mano.
Gilles 'SO- deja de ser malvado'
@Gilles sí, tienes razón, corrigí la respuesta, pero el guión bajo está bien, para responder a la pregunta, el NAME_REGEX está allí para evitar algún tipo de error, pero no está configurado como predeterminado porque normalmente algunos de estos caracteres están permitidos.
hasta el
0

Estoy usando Debian Squeeze y he logrado crear un usuario con subrayado, adduser user_1. ¿Por qué dices que no están permitidos?

tshepang
fuente
Tal vez lo he malinterpretado. Acabo de recordar haber editado /etc/adduser.conf en un servidor Debian y el NAME_REGEX (es decir, la expresión regular no permitida) contenía un guión bajo. Sin embargo, se comentó allí, pero supongo que supuse que representaba el NAME_REGEX predeterminado.
Sam
NAME_REGEXes el nombre permitido regex, no el nombre no permitido regex ... es decir, si un nombre coincide, NAME_REGEXentonces es válido.
Josh
Debian Lenny (estable mientras escribo) no tiene NAME_REGEXen /etc/adduser.conf, y el incorporado en la prohíbe por defecto _.
Gilles 'SO- deja de ser malvado'