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?
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.conf
archivo 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.
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_REGEX
en Ubuntu es (desde la página de /etc/adduser.conf
manual):
^[a-z][-a-z0-9]*$
_
, @
o .
.En conclusión, .
se puede usar un punto para un nombre de usuario de Ubuntu, NAME_REGEX
solo 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.
Ejecute este comando en una terminal:
sudo nano /etc/adduser.conf
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
.
Presione Ctrl+ X, luego Y, luego Enter.
Referencias
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
en/etc/adduser.conf
sí.useradd
en su lugar:sudo useradd -m my.user
. Eso es lo que hacemos en Userify y también es multiplataforma.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.
fuente
Marc Haber explica una posible desventaja en el error de Debian # 604242 (Permitir puntos en el nombre de usuario por defecto):
Y
chown
aú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.fuente