Réponses:
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.
_est autorisé par défaut, voir la modification. J'ai donné un exemple du personnage interdit :pour montrer les problèmes possibles avec lui.
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.
: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.
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?
NAME_REGEXest le nom autorisé regex, pas le nom non autorisé regex ... c'est-à-dire si un nom correspond NAME_REGEXalors il est valide.
NAME_REGEXdans /etc/adduser.conf, et par défaut dans défend intégré _.
_ne pas:...