Comment ajouter un utilisateur existant à un groupe existant?

669

Je veux ajouter l'utilisateur Apache ( www-data) au audiogroupe. J'ai lu la page de manuel pour useradd, mais je n'ai aucune chance. Je suis sous xubuntu 11.10. Voici ce que je fais:

$ sudo useradd -G audio www-data
useradd: user 'www-data' already exists

Si je laisse de côté l' -Goption bash, affiche les informations d'aide pour useradd:

$ sudo useradd  audio www-data
Usage: useradd [options] LOGIN
Options: -b, --base-dir BASE_DIR       base directory for the home directory...

La page de manuel ne me permet pas de savoir quelles options utiliser pour que cela fonctionne.

Sparky1
la source

Réponses:

1040

La useraddcommande va essayer d'ajouter un nouvel utilisateur. Puisque votre utilisateur existe déjà, ce n'est pas ce que vous voulez.

Au lieu de cela: Pour modifier un utilisateur existant, par exemple pour l'ajouter à un nouveau groupe, utilisez la usermodcommande.

Essaye ça:

sudo usermod -a -G groupName userName

L'utilisateur devra se déconnecter et se reconnecter pour voir son nouveau groupe ajouté.

  • Le -acommutateur (append) est essentiel. Sinon, l'utilisateur sera supprimé de tous les groupes, pas dans la liste.

  • Le -Gcommutateur prend une liste (séparée par des virgules) de groupes supplémentaires à affecter à l'utilisateur.

dpendolino
la source
71
sudo usermod -a -G [group-name] [user-name]: Juste un coup rapide pour ceux qui jettent un coup d'œil à la réponse après avoir lu le titre
Programster
36
Je pense que la manière préférée est maintenant sudo adduser user group. C'est une syntaxe plus simple et plus propre. Voir la réponse de @Bai.
ctbrown
3
@wilhil:: man usermod" -a, --append - Ajoute l'utilisateur au (x) groupe (s) supplémentaire (s). À utiliser uniquement avec l'option -G .; -G, --groups GROUP1 [, GROUP2, ... [, GROUPN] ]] [...] Si l'utilisateur est actuellement membre d'un groupe non répertorié, il sera supprimé du groupe. Ce comportement peut être modifié via l'option -a, qui l'ajoute au groupe supplémentaire actuel. liste de groupe. "
Adam Michalik
18
Existe-t-il un moyen de contourner la partie "déconnexion et retour"? Un type de commande update-groups, peut-être?
Con-f-use
14
@ con-f-use, si vous pouvez exécuter sudo login -f YOURUSERNAME, il va démarrer une nouvelle session shell. Utilisez la idcommande pour vérifier que la nouvelle session appartient au bon ensemble de groupes. Cependant, ce n'est pas "global" - cela ne s'applique pas aux terminaux déjà ouverts. Alors, vraiment, se déconnecter est la meilleure option, si possible
Aaron McDaid Le
222

Ajouter un utilisateur à un groupe:

sudo adduser user group

Supprimer un utilisateur d'un groupe:

sudo deluser user group
Bai
la source
3
pas exactement ce que cette question est posée
Tejendra
11
Le commentaire de @ Tejendra semble présupposer que l'utilisation de useradd est souhaitable / obligatoire pour répondre à la question de OP; Peut-être que cette réponse manque simplement de mots pour indiquer que adduser / deluser est une meilleure alternative.
Sage
12
Pour moi, une interface plus simple est meilleure, c'est pourquoi j'aime celle-ci.
Betlista
4
C'est exactement la question posée. @knocte, oui, je pense que c'est spécifique à Debian
Auspex
3
@Auspex, je peux confirmer que cela ne fonctionne pas sur Red Hat.
Stibu
54

Après avoir ajouté à un utilisateur existant:

usermod -a -G group user  

Vous devrez peut-être vous déconnecter et vous connecter pour obtenir les autorisations des groupes /etc/group.

Amos Folarin
la source
21
Veuillez en faire la partie "nécessité de se déconnecter et de se connecter" en gras.
Jin Kwon
FYI: Je pense que la idcommande devrait indiquer que vous avez été ajouté au groupe sans avoir besoin de quitter. id myuser
jeudi
5
La déconnexion et le retour étaient nécessaires pour moi sur Ubuntu 14.10.
A.Danischewski
26

J'utilise normalement

sudo gpasswd -a myuser mygroup
enzotib
la source
3
usermod n'était pas disponible sur mon système Ubuntu 14.04. Cela a très bien fonctionné!
Drew
Cela fonctionnait également très bien sur Debian Stretch, où il usermodn’était pas installé.
Josh Habdas
8

Je poste ceci comme réponse parce que je n'ai pas assez de réputation pour commenter. Comme @ dpendolino l'a mentionné, pour que les effets de cette commande persistent:

sudo usermod -a -G groupName userName

... vous devez vous déconnecter / vous connecter à nouveau.

Cependant, si vous avez besoin d'un raccourci pour commencer à utiliser immédiatement votre nouvelle appartenance à un groupe (et que vous ayez les privilèges sudo appropriés ), j'ai trouvé cette solution:

$ sudo su -
# su [userName]
$ groups

Explication:

  • sudo su - va vous donner un shell racine
  • su [userName] vous renvoie à un shell avec votre utilisateur
  • groupslorsqu’il est exécuté, le groupe que vous avez ajouté avec la usermod -aGcommande

Dans mon cas, j'essayais d'ajouter le groupe "docker" à mon utilisateur

Avant:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

Après:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
bluemorpho
la source
5

Sous Ubuntu, la connexion en tant que rootn'étant pas activée , les utilisateurs du sudogroupe peuvent élever les privilèges de certaines commandes restreintes. Toute commande restreinte doit être précédée sudode privilèges élevés.

sudo usermod -a -G group user

ajoutera l'utilisateur existant userà un groupe supplémentaire nommé group. Le groupe principal de l'utilisateur restera inchangé.

Debra Butcher McCusker
la source
1
sudo usermod -a -G groupName userName

fonctionnera très bien, mais je devais redémarrer entièrement, déconnectez-vous et connectez-vous à nouveau n'a pas fait le travail ...

alex
la source