Quels sont les inconvénients d'avoir un point dans un nom d'utilisateur?

27

Un étudiant vient de demander quel pourrait être l'inconvénient d'avoir un point ( .) au nom de l'utilisateur. Par exemple:john.doe

Comment cela affectera-t-il le système ou les applications?

Luis Alvarado
la source

Réponses:

38

POSIX déclare ceci à propos des noms d'utilisateur:

[...] Pour être portable sur des systèmes conformes à IEEE Std 1003.1-2001, la valeur est composée de caractères du jeu de caractères de nom de fichier portable. Le tiret ne doit pas être utilisé comme premier caractère d'un nom d'utilisateur portable.

... où le jeu de caractères du nom de fichier portable 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 . _ -

En outre, la page de manuel du /etc/adduser.conffichierIcône de page de manuel indique:

   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.

cependant,

Alors que les deux spécifications semblent inclure le point, Ubuntu (sur mon 13.04 au moins) semble le refuser:

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

La valeur NAME_REGEXpar défaut dans Ubuntu est (à partir de la /etc/adduser.confpage de manuel):

^[a-z][-a-z0-9]*$
  • Commençant par une lettre minuscule puis un nombre quelconque de tirets, de lettres minuscules ou de chiffres. Non _, @ou ..

Alors,

en conclusion, un point .peut être utilisé pour un nom d'utilisateur Ubuntu, il NAME_REGEXsuffit de le changer /etc/adduser.conf. Étant donné 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.

Pour activer un point dans les noms d'utilisateur

  1. Exécutez cette commande dans un terminal:

    sudo nano /etc/adduser.conf
    
  2. Localisez cette ligne (vers la fin du fichier)

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

    et remplacez-le par

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

    Notez que le -doit rester le premier caractère de l'expression entre crochets [...], sinon il est traité comme spécifiant une plage a-z.

  3. Appuyez sur Ctrl+ X, puis Y, puis Enter.


Les références:

kiri
la source
@ vasa1 Merci d'avoir signalé cela, corrigé.
kiri
2
Salut minerz029, avant d'accepter la réponse qui, autant que je puisse voir, c'est une excellente sans aucun doute, pourriez-vous s'il vous plaît fournir les raisons pour lesquelles Ubuntu prendrait cette décision.
Luis Alvarado
2
@LuisAlvarado: Il est possible que ce soit pour la compatibilité avec les programmes [non POSIX] qui attendent un nom d'utilisateur utilisant un jeu de caractères plus limité. Les caractères qu'Ubuntu autorise par défaut sont presque garantis pour fonctionner dans presque tous les programmes. La page de manuel adduser décrit l'expression régulière par défaut comme "la plus conservatrice", étant du côté le plus sûr des noms d'utilisateur.
kiri
1
Cela ne fonctionne pas pour moi, mais en ajoutant NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"à /etc/adduser.conffait.
Mario
1
Ne changez pas l'expression régulière. Il suffit d' appeler à la useraddplace: sudo useradd -m my.user. C'est ce que nous faisons dans Userify et c'est également multiplateforme.
Jamieson Becker le
3

Les applications qui lisent les noms d'utilisateur peuvent utiliser une expression régulière qui suppose que votre nom d'utilisateur suit les règles et ne peut donc pas gérer votre nom d'utilisateur.

Jo-Erlend Schinstad
la source
Mais ils peuvent également faire des hypothèses qui entrent en collision avec les hypothèses de la distribution, non?
0xC0000022L
3

Marc Haber explique un inconvénient possible dans le bogue Debian # 604242 (Autoriser les points dans le nom d'utilisateur par défaut):

Le fait d'avoir des points dans le nom d'utilisateur crée certains problèmes avec scipts à l'aide de chown, qui accepte toujours les points comme séparateur entre le nom d'utilisateur et le nom de groupe. S'il chownaccepte toujours des 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 remplacée par la configuration locale) jusqu'à ce qu'elle chownait cessé d'accepter les points comme séparateur.

Et chownaccepte toujours le point comme séparateur, bien qu'il ne soit plus documenté. Je suis d'accord 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 négatif.

Ferenc Wágner
la source