web-dev-qa-db-fra.com

Quels caractères dois-je 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'utilisateur doivent correspondre à 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 en utilisant useradd sans me plaindre. Y a-t-il une raison pour laquelle je ne devrais pas modifier l'expression régulière pour autoriser ., - et _?

Quels personnages causeront des problèmes et 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]*\$"
41
Ed Haber

Mon conseil est de suivre la norme recommandée par le NAME_REGEX par défaut. Vous pouvez réellement mettre presque n'importe quoi dans un nom d'utilisateur sous * NIX mais vous pouvez rencontrer des problèmes étranges avec le code de bibliothèque qui fait des hypothèses. Exemple concret:

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

Ma question pour vous: avez-vous beaucoup de noms de domaine qui entreraient en collision si vous supprimiez la ponctuation inhabituelle? Par exemple, avez-vous à la fois "QUALITY-ASSURANCE" et QUALITYASSURANCE "comme noms de domaine? Sinon, vous pouvez simplement adopter une politique de suppression des caractères inhabituels et d'utiliser ce qui reste comme nom d'utilisateur.

En outre, vous pouvez utiliser la section "vrai nom" du champ GECOS dans les informations/etc/passwd pour stocker le nom de domaine original et non modifié, et les scripts peuvent l'extraire assez facilement.

27
steveha

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


.431 Nom d'utilisateur

Une chaîne utilisée pour identifier un utilisateur; voir aussi Base de données utilisateur. Pour être portable sur des systèmes conformes à POSIX.1-2008, la valeur est composée de caractères du jeu de caractères de nom de fichier portable. Le <hyphen> ne doit pas être utilisé comme premier caractère d'un nom d'utilisateur portable.


.278 Jeu de caractères de 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 conforme à cette norme est conforme à POSIX et doit être sécurisé.

25
HopelessN00b

Du NAME_REGEX peut être déduit que tout sauf a à z en majuscules et minuscules et le nombre 0 à 9 serait mauvais.

1
wzzrd