¿Qué caracteres debo usar o no usar en los nombres de usuario en Linux?

39

Quiero crear cuentas de usuario con el nombre de un nombre de dominio. adduser se queja de que los nombres de usuario deben coincidir con la NAME_REGEXexpresión regular.

adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

Puedo agregar usuarios usando useradd sin quejas. ¿Hay alguna razón que no debería modificar la expresión regular para permitir ., -y _?

¿Qué caracteres causarán problemas y no deberían permitirse en los nombres de usuario?

Este es el valor predeterminado NAME_REGEX.

NAME_REGEX="^[a-z][-a-z0-9]*\$"
Ed Haber
fuente
1
Tenga en cuenta que NAME_REGEXya acepta -siempre y cuando no sea el primer personaje.
Anillo Ø
¿Por qué no agregar .? Considere un usuario llamado .o ... Entonces, rmese usuario llamado ...
Jon
1
@ Jon no es un problema, ya rmque no es el comando que se debe usar al eliminar un usuario. Estoy de acuerdo en ..que no es un nombre razonable por razones similares, pero rmno es uno de esos.
toon81

Respuestas:

26

Mi consejo es que sigas el estándar recomendado por el NAME_REGEX predeterminado. En realidad, puede poner casi cualquier cosa en un nombre de usuario bajo * NIX, pero puede encontrar problemas extraños con el código de la biblioteca que hace suposiciones. Caso en punto:

http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html

Mi pregunta para usted: ¿tiene muchos nombres de dominio que colisionarían entre sí si eliminara la puntuación inusual? Por ejemplo, ¿tiene tanto "QUALITY-ASSURANCE" como QUALITYASSURANCE "como nombres de dominio? De lo contrario, podría simplemente adoptar una política de eliminar los caracteres inusuales y usar lo que queda como nombre de usuario.

Además, puede usar la sección "nombre real" del campo GECOS en la información / etc / passwd para almacenar el nombre de dominio original, no modificado, y los scripts pueden extraerlo con bastante facilidad.

steveha
fuente
Es la parte de encontrar errores inesperados al azar lo que me preocupa. Puedo eliminar los puntos con bastante facilidad y todavía no tengo posibilidades de conflictos de nombres, pero el - podría causar un problema. Aún así es bastante improbable.
Ed Haber
Entonces, el sistema Debian que estoy usando está usando un usuario www-data. Parece que debería estar bien para ser usado en nombres de usuario.
Ed Haber
¡En realidad, esa expresión regular permite '-' en los nombres de usuario! La primera letra debe ser az, pero las letras posteriores de los nombres de usuario pueden ser '-', az o 0-9.
steveha
Ohh! tienes razón. Me perdí el extra, cuando lo estaba mirando.
Ed Haber
22

Más específicamente, el estándar POSIX ("Interfaz de sistema operativo portátil para Unix") (IEEE Standard 1003.1 2008) establece :


3.431 Nombre de usuario

Una cadena que se usa para identificar a un usuario; ver también Base de datos del usuario. Para ser portátil en todos los sistemas conformes con POSIX.1-2008, el valor se compone de caracteres del conjunto de caracteres de nombre de archivo portátil. El <hyphen>carácter no debe usarse como el primer carácter de un nombre de usuario portátil.


3.278 Juego de caracteres de nombre de archivo portátil

The set of characters from which portable filenames are constructed.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -

Cualquier nombre de usuario que cumpla con este estándar es compatible con POSIX y debe ser seguro.

HopelessN00b
fuente
66
Si bien esto es cierto, generalmente está mal visto tener mayúsculas en los nombres de usuario: las personas tienen suficientes problemas con las contraseñas que distinguen entre mayúsculas y minúsculas, y hacer que tengan que recordar las mayúsculas y minúsculas en sus nombres de usuario es simplemente patearlos cuando están caídos. (Excepción: cuando su convención de nombre de usuario es ALL UPPERCASE CHARACTERS.)
voretaq7
1
A partir de POSIX.1-2017, esas definiciones se han movido un poco. 3.431 El nombre de usuario ahora es 3.437 El nombre de usuario y 3.278 El juego de caracteres de nombre de archivo portátil ahora es 3.282 El juego de caracteres de nombre de archivo portátil
Chuck Wolber el
@ voretaq7 Lo que creo que es legítimo es preservar mayúsculas y minúsculas en un nombre de usuario, pero hacer que los inicios de sesión no distingan entre mayúsculas y minúsculas. Por lo tanto, un nombre de usuario podría ser CatInTheHat pero inicie sesión especificando catinthehat o catintheHAT o lo que sea.
StackOverflowUser
1

Del NAME_REGEX se puede deducir que todo, menos de a a z en mayúsculas y minúsculas, y el número de 0 a 9 sería malo.

wzzrd
fuente
La palabra que estás buscando es "deducida".
wfaulk
mirar nuevamente la expresión regular, -también se acepta (solo que no como el primer carácter). También tenga en cuenta que, por defecto, no se acepta mayúscula (no hay gbandera, ni se A-Zincluye en la NAME_REGEX expresión regular proporcionada por el OP.NAME_REGEX="^[a-z][-a-z0-9]*\$"
SherylHohman