Un étudiant vient de demander quel pourrait être l'inconvénient d'avoir un point (.
) dans le nom de l'utilisateur. Par exemple: john.doe
Comment cela affectera-t-il le système ou des applications?
POSIX états ceci à propos des noms d'utilisateurs:
[...] Pour être portable sur des systèmes conformes à la norme IEEE 1003.1-2001, la valeur est composée de caractères du jeu de caractères du nom de fichier portable. Le trait d'union ne doit pas être utilisé comme premier caractère d'un nom d'utilisateur portable.
... où le portable jeu de caractères du nom de fichier est:
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 . _ -
De plus, la page de manuel pour le fichier /etc/adduser.conf
déclare:
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.
Alors que les deux spécifications semblent inclure le point, Ubuntu (du moins sur mon 13.04) semble l’interdire:
⊳ 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.
Le NAME_REGEX
par défaut dans Ubuntu est (à partir de la page de manuel /etc/adduser.conf
):
^[a-z][-a-z0-9]*$
_
, @
ou .
.en conclusion, un point .
peut être utilisé pour un nom d'utilisateur Ubuntu, le NAME_REGEX
doit simplement être changé dans /etc/adduser.conf
. Considérant qu’il est conforme à POSIX, il ne devrait y avoir aucun problème à avoir un .
dans le nom d’utilisateur avec un programme compatible POSIX.
Exécutez cette commande dans un terminal:
Sudo nano /etc/adduser.conf
Localisez cette ligne (près de la fin du fichier)
#NAME_REGEX="^[a-z][-a-z0-9]*$"
et le remplacer par
NAME_REGEX='^[a-z][-.a-z0-9]*$'
Notez que -
doit rester le premier caractère de l'expression entre crochets [...]
, sinon il est traité comme spécifiant une plage a-z
.
Presse Ctrl+X, puis Y, puis Enter.
Références:
Marc Haber explique un inconvénient possible du bogue Debian # 604242 (Autorise les points dans le nom d'utilisateur par défaut):
Avoir des points dans le nom d'utilisateur crée certains problèmes avec les scipts en utilisant
chown
name__, qui accepte toujours les points comme séparateur entre le nom d'utilisateur et le nom de groupe. Sichown
accepte toujours les points, il y aura des scripts utilisant cette notation, qui se briseront si un nom d'utilisateur contient un point.Je recommanderais de conserver la valeur par défaut actuelle (qui peut être écrasée par la configuration locale) jusqu'à ce que
chown
ait cessé d'accepter les points comme séparateur.
Et chown
accepte toujours le point comme séparateur, bien qu'il ne soit plus documenté. Je conviens que la compatibilité POSIX devrait prévaloir et j’emploie en effet des noms d’utilisateur contenant des points sur plusieurs systèmes sans aucun effet indésirable.
Les applications qui lisent les noms d'utilisateur peuvent utiliser une expression régulière qui suppose que votre nom d'utilisateur respecte les règles et ne peut donc pas gérer votre nom d'utilisateur.