Vous pouvez utiliser: usermod -a -G grouptoadd username
Comme il est beaucoup moins évident que je ne le pensais pourquoi -a -G est correct alors que -aG ne l'est pas, je vais essayer de l'expliquer:
L'option -G prend une valeur ou une liste de valeurs. Dans le cas d'une valeur, la valeur peut être donnée comme: -GVALUE car il n'y a aucune exigence d'avoir un espace entre l'option et la valeur. Ce n'est qu'une pratique courante.
Si vous avez un groupe appelé a sur votre système, l'appel de -Ga devient ambigu. Voulez-vous que l'utilisateur ait un seul groupe a? Appelez-vous -a et -G? Alors, "a" est-il une valeur pour -G? Où est le reste de la valeur (en -G)? Il est également courant que toute option à lettre unique puisse précéder toute autre option à lettre unique. donc tat -xy == -yz. Mais cela est ambigu lorsque l'une des options peut prendre une seule valeur comme VALUE ou plusieurs valeurs comme VAL1, Val2, val4, etc.
Donc, pour rendre la commande FAILSAFE et fonctionner correctement pour toutes les entrées, vous devez séparer -a de -G
De man usermod
:
Nom
usermod - modifier un compte utilisateur
Synopsis
usermod [options] CONNEXION
La description
La commande usermod modifie les fichiers de compte système pour refléter les modifications spécifiées sur la ligne de commande.
Les options
Les options qui s'appliquent à la commande usermod sont:
-a, --append
Ajoutez l'utilisateur au (x) groupe (s) supplémentaire (s). À utiliser uniquement avec l' option -G .
...
-G, --groupes GROUP1 [, GROUP2, ... [, GROUPN]]]
Une liste de groupes supplémentaires dont l'utilisateur est également membre. Chaque groupe est séparé du suivant par une virgule, sans espace intermédiaire. Les groupes sont soumis aux mêmes restrictions que le groupe donné avec l' option -g .
Si l'utilisateur est actuellement membre d'un groupe qui n'est pas répertorié, l'utilisateur sera supprimé du groupe. Ce comportement peut être modifié via l' option -a , qui ajoute l'utilisateur à la liste de groupes supplémentaires actuelle.
...
Si vous avez exécuté les commandes exactement comme vous l'avez montré dans votre question, vous n'avez pas créé l'utilisateur Keith, mais uniquement l'utilisateur John. Pour exécuter des commandes les unes après les autres sur la ligne de commande, vous devez les séparer à l'aide de
;
ou&&
. Sinon, seule la première commande sera exécutée:Si vous avez fait les exécuter correctement, faites attention lettres majuscules. Dans votre question, vous mentionnez à la fois "John" et "john". Cela devrait fonctionner:
la source
Vous pouvez également modifier les fichiers de configuration manuellement:
Attribuez l'ID et d'autres champs.
la source