Pourquoi les traits de soulignement ne sont-ils pas autorisés dans les noms d'utilisateur dans certaines distributions (Debian par exemple)


8

Alors pourquoi le trait de soulignement a-t-il été considéré comme un mauvais caractère pour les noms d'utilisateur dans Debian (et peut-être d'autres distributions) alors qu'il a été supprimé de adduserNAME_REGEX dans Ubuntu?

Réponses:


7

POSIX spécifie l'utilisation d'un ensemble portable de caractères pour les noms d'utilisateur et de groupe.
_ - .sont des caractères autorisés, NAME_REGEXvérifie si le nom d'utilisateur ne contient que des caractères spécifiés. Les développeurs de distribution définissent, si d'autres caractères sont refusés. Ubuntu, par exemple, interdit l'utilisation de .par défaut.

L'ajout de cette restriction évite les interférences avec d'autres outils système, qui peuvent interpréter des caractères spéciaux. Pensez à la variable $PATH, lorsque vous avez un utilisateur avec le nom my:useret ajoutez votre répertoire personnel à $PATH:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin

Les répertoires /home/myet user/binn'existeraient (probablement) pas. En outre, /etc/passwdaurait deux de :plus que nécessaire.

Edit: les utilisations de
Debian adduser(version 3.110) /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/pour vérifier les noms d'utilisateur _ sont autorisées tant que NAME_REGEXcela ne l'interdit pas.


1
Mais la question était de _ne pas :...
Josh

Le @ n'est-il pas également autorisé en posix, du moins selon adduser
Sam

Et oui, alors que cela explique pourquoi vous ne devriez pas autoriser: cela n'explique pas pourquoi _ est mauvais.
Sam

1
_est autorisé par défaut, voir la modification. J'ai donné un exemple du personnage interdit :pour montrer les problèmes possibles avec lui.
wag

@Sam, @ n'est pas autorisé dans POSIX, voir askubuntu.com/a/405668/13482
Daniel Serodio

3

Une question similaire a déjà été répondue ici

Théoriquement, vous pouvez utiliser presque n'importe quel caractère ASCII que vous souhaitez comme nom d'utilisateur, mais, pour éviter certains types de bogues, comme celui mentionné dans l'article ci-dessus, vous pouvez définir cette expression régulière qui évite certains problèmes.


Vous ne pourrez pas utiliser :une nouvelle ligne ou un caractère nul dans un nom d'utilisateur même si vous modifiez /etc/passwd(ou la plupart des autres bases de données utilisateur) à la main.
Gilles 'SO- arrête d'être méchant'

@Gilles oui vous avez raison, j'ai corrigé la réponse, mais le trait de soulignement est correct, pour répondre à la question, le NAME_REGEX est là pour éviter certains types de bugs, mais il n'est pas défini par défaut car normalement certains de ces caractères sont autorisés.
tmow

0

J'utilise Debian squeeze et je réussi à créer un utilisateur avec underscore, adduser user_1. Pourquoi dites-vous qu'ils ne sont pas autorisés?


Je l'ai peut-être mal interprété. Je viens de me souvenir d'avoir édité /etc/adduser.conf sur un serveur Debian et le NAME_REGEX (c'est-à-dire le regex de nom non autorisé) contenait un trait de soulignement. Il a cependant été commenté, mais je suppose que j'ai supposé qu'il représentait le NAME_REGEX par défaut.
Sam

NAME_REGEXest le nom autorisé regex, pas le nom non autorisé regex ... c'est-à-dire si un nom correspond NAME_REGEXalors il est valide.
Josh

Debian Squeeze (stable écriture I) ne dispose pas NAME_REGEXdans /etc/adduser.conf, et par défaut dans défend intégré _.
Gilles 'SO- arrête d'être méchant'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.