63 votes

Quels sont les caractères à utiliser ou à ne pas utiliser dans les noms d'utilisateur sous Linux ?

Je veux créer des comptes d'utilisateurs nommés d'après un nom de domaine. adduser se plaint que les noms d'utilisateurs doivent correspondre au nom de domaine. NAME_REGEX expression régulière.

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.

Je peux ajouter les utilisateurs à l'aide de useradd sans problème. Y a-t-il une raison pour laquelle je ne devrais pas modifier l'expression régulière pour permettre à . , - y _ ?

Quels sont les caractères qui posent problème et qui ne devraient pas être autorisés dans les noms d'utilisateur ?

Il s'agit de la valeur par défaut NAME_REGEX .

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

46voto

HopelessN00b Points 53075

Plus précisément, le La norme POSIX ("Portable Operating System Interface for Unix") (norme IEEE 1003.1 2008) stipule que :


3.437 Nom d'utilisateur

Chaîne de caractères utilisée pour identifier un utilisateur ; voir aussi Base de données des utilisateurs. Pour être portable sur les systèmes conformes à POSIX.1-2017, la valeur est composée de caractères du jeu de caractères portable pour les noms de fichiers. La valeur <hyphen-minus> ne doit pas être utilisé comme premier caractère d'un nom d'utilisateur portable.


3.282 Jeu de caractères du nom de fichier portable

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

Tout nom d'utilisateur qui respecte cette norme est conforme à POSIX et devrait être sûr.

33voto

dthrasher Points 10641

Je vous conseille de suivre la norme recommandée par le NAME_REGEX par défaut. Vous pouvez en fait mettre presque n'importe quoi dans un nom d'utilisateur sous *NIX, mais vous risquez de rencontrer des problèmes étranges avec le code de la bibliothèque qui fait des suppositions. En voici un exemple :

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

Ma question : avez-vous beaucoup de noms de domaine qui entreraient en collision les uns avec les autres si l'on supprimait la ponctuation inhabituelle ? Par exemple, avez-vous à la fois "QUALITY-ASSURANCE" et QUALITYASSURANCE" comme noms de domaine ? Si ce n'est pas le cas, vous pouvez simplement adopter une politique consistant à supprimer les caractères inhabituels et à utiliser ce qui reste comme nom d'utilisateur.

Vous pouvez également utiliser la section "nom réel" de la page d'accueil de l'application Champ GECOS dans le fichier /etc/passwd pour stocker le nom de domaine original, non modifié, et les scripts pourraient l'extraire assez facilement.

2voto

Arunas Bartisius Points 501

Il semble qu'il y ait une raison à cette limitation.

Si vous essayez de lancer le service systemd pour scripts, il se peut qu'il démarre en tant que root et non en tant qu'utilisateur. Cela est dû au fait que systemd ne reconnaît pas l'utilisateur avec un point (nom d'utilisateur domain.com par exemple) comme un utilisateur valide et lance le service en tant que root à la place. Cela peut être corrigé du côté de systemd, mais il y a toujours un risque.

Le fait d'avoir des points dans le nom de l'utilisateur crée également des problèmes avec les scripts qui utilisent la fonction chown, qui accepte toujours les points comme séparateurs entre le nom d'utilisateur et le nom de groupe. nom de groupe. Si chown accepte toujours les points, il y aura des scripts qui utiliseront cette notation, ce qui ne fonctionnera pas si le nom d'utilisateur et le nom de groupe sont séparés par des points. cette notation, qui seront interrompus si un nom d'utilisateur contient un point.

0voto

Jeff Hillman Points 3333

On peut déduire du NAME_REGEX que tout ce qui n'est pas a à z en majuscules et en minuscules et les chiffres de 0 à 9 est mauvais.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X