¿Cuáles son las desventajas de tener un punto en un nombre de usuario?

27

Un estudiante acaba de preguntar cuál podría ser la desventaja de tener un punto ( .) en el nombre del usuario. Por ejemplo:john.doe

¿Cómo afectará esto al sistema o a las aplicaciones?

Luis Alvarado
fuente

Respuestas:

38

POSIX afirma esto sobre los nombres de usuario:

[...] Para ser portátil en todos los sistemas que cumplen con IEEE Std 1003.1-2001, el valor se compone de caracteres del juego de caracteres portátil de nombre de archivo. El guión no debe usarse como el primer carácter de un nombre de usuario portátil.

... donde el conjunto de caracteres de nombre de archivo portátil es:

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

Además, la página de manual del /etc/adduser.confarchivoIcono de página de manual dice:

   VALID NAMES
          adduser and addgroup enforce conformity to IEEE Std 1003.1-2001,
          which  allows  only  the following characters to appear in group
          and user names: letters, digits, underscores, periods, at  signs
          (@) and dashes. The name may not start with a dash. The "$" sign
          is allowed at the end of usernames (to conform to samba).

          An additional  check  can  be  adjusted  via  the  configuration
          parameter NAME_REGEX to enforce a local policy.

Sin embargo,

Si bien ambas especificaciones parecen incluir el punto, Ubuntu (en mi 13.04 al menos) parece no permitirlo:

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

El valor predeterminado NAME_REGEXen Ubuntu es (desde la página de /etc/adduser.confmanual):

^[a-z][-a-z0-9]*$
  • Comenzando con una letra minúscula y luego cualquier número de guiones, letras minúsculas o dígitos. No hay _, @o ..

Asi que,

En conclusión, .se puede usar un punto para un nombre de usuario de Ubuntu, NAME_REGEXsolo hay que cambiarlo /etc/adduser.conf. Dado que se ajusta a POSIX, no debería haber ningún problema al tener un .nombre de usuario en cualquier programa compatible con POSIX.

Para habilitar un punto en los nombres de usuario

  1. Ejecute este comando en una terminal:

    sudo nano /etc/adduser.conf
    
  2. Localice esta línea (cerca del final del archivo)

    #NAME_REGEX="^[a-z][-a-z0-9]*$"
    

    y reemplazarlo con

    NAME_REGEX='^[a-z][-.a-z0-9]*$'
    

    Tenga en cuenta que -debe seguir siendo el primer carácter en la expresión de paréntesis [...]; de lo contrario, se trata como si especificara un rango a-z.

  3. Presione Ctrl+ X, luego Y, luego Enter.


Referencias

kiri
fuente
@ vasa1 Gracias por señalarlo, solucionado.
kiri
2
Hola, minerz029, antes de aceptar la respuesta que, por lo que puedo ver, es excelente, sin duda, ¿podría proporcionar las razones por las que Ubuntu tomaría esta decisión?
Luis Alvarado
2
@LuisAlvarado: es posible que sea por compatibilidad con programas [no POSIX] que esperan un nombre de usuario que use un conjunto de caracteres más limitado. Los caracteres que Ubuntu permite por defecto están casi garantizados para funcionar en casi todos los programas. La página de manual de adduser describe la expresión regular predeterminada como "más conservadora", estando en el lado más seguro de los nombres de usuario.
kiri
1
Esto no funcionó para mí, pero la adición NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"en /etc/adduser.confsí.
Mario
1
No cambies la expresión regular. Sólo tiene que llamar useradden su lugar: sudo useradd -m my.user. Eso es lo que hacemos en Userify y también es multiplataforma.
Jamieson Becker
3

Las aplicaciones que leen nombres de usuario pueden usar una expresión regular que asume que su nombre de usuario sigue las reglas y, por lo tanto, no puede manejar su nombre de usuario.

Jo-Erlend Schinstad
fuente
Pero igualmente pueden hacer suposiciones que colisionan con suposiciones hechas por la distribución, ¿verdad?
0xC0000022L
3

Marc Haber explica una posible desventaja en el error de Debian # 604242 (Permitir puntos en el nombre de usuario por defecto):

Tener puntos en el nombre de usuario crea algunos problemas con el uso de scipts chown, que aún acepta puntos como separador entre el nombre de usuario y el nombre del grupo. Si chownaún acepta puntos, habrá scripts que usen esta notación, que se romperán si un nombre de usuario contiene un punto.

Recomendaría mantener el valor predeterminado actual (que puede sobrescribirse con la configuración local) hasta que chownhaya dejado de aceptar puntos como separador.

Y chownaún acepta el punto como separador, aunque ya no está documentado. Estoy de acuerdo en que prevalecerá la compatibilidad con POSIX, y de hecho empleo nombres de usuario que contienen puntos en varios sistemas sin ningún efecto adverso.

Ferenc Wágner
fuente