Comment ajouter un utilisateur existant à un groupe existant?

Je veux ajouter l'utilisateur Apache (www-data) à la audio groupe. J'ai lu la page de manuel pour useradd, mais je n'ai pas de chance. J'utilise xubuntu 11.10. Voici ce que je fais:

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

Si je laisse de côté le -G option, bash, imprime les informations d'aide pour useradd:

$ sudo useradd  audio www-dataUsage: useradd [options] LOGINOptions: -b, --base-dir BASE_DIR       base directory for the home directory...

Il n'est pas clair pour moi à partir de la page de manuel quelles options je devrais utiliser pour que cela fonctionne.

Le useradd la commande 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, comme l'ajout de cet utilisateur à un nouveau groupe, utilisez le usermod commande.

Essayez ceci:

sudo usermod -a -G groupName userName
  • Le -a le commutateur (append) est essentiel. Sinon, l'utilisateur sera supprimé de tous les groupes, pas dans la liste.

  • Le -G switch prend une liste (séparée par des virgules) de groupes supplémentaires auxquels attribuer l'utilisateur.

En général (pour l'interface graphique, ou pour les processus déjà en cours d'exécution, etc.), utilisateur vous devrez vous déconnecter et vous reconnecter pour voir leur nouveau groupe ajouté. Pour la session shell en cours, vous pouvez utiliser newgrp:

newgrp groupName
  • newgrp ajoute le groupe à la session shell en cours.

Ajout d'un utilisateur à un groupe:

sudo adduser user group

Supprimer un utilisateur d'un groupe:

sudo deluser user group

Après avoir ajouté à un utilisateur existant:

usermod -a -G group user  

Vous pourriez avoir besoin de déconnexion et connexion pour obtenir les autorisations des groupes à partir de /etc/group.

J'utilise normalement

sudo gpasswd -a myuser mygroup

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 reconnecter.

Cependant, si vous avez besoin d'un raccourci pour commencer à utiliser votre nouvelle appartenance à un groupe immédiatement (et vous avez le bon sudo 1) J'ai trouvé cette solution de contournement:

$ sudo su -# su [userName]$ groups

Explication:

  • sudo su - vous donnera un shell racine
  • su [userName] vous renvoie à un shell avec votre utilisateur
  • groups lorsque run now affichera le groupe que vous avez ajouté avec le usermod -aG commande

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

Avant:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

Après:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
sudo usermod -a -G groupName userName

fonctionnera très bien, mais je devais redémarrer entièrement, il suffit de se déconnecter et de se reconnecter n'a pas fait le travail...

Sur Ubuntu, depuis se connecter en tant que root n'est pas activé, utilisateurs dans le sudo le groupe peut élever les privilèges pour certaines commandes restreintes. Toute commande restreinte doit être précédée de sudo pour élever le privilège.

sudo usermod -a -G groupe utilisateur

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

Pour ajouter définitivement un utilisateur à un groupe, exécutez cette commande:

sudo usermod -a -G <groupname> <username>

Ensuite, déconnectez-vous et reconnectez-vous (ou redémarrez si nécessaire).

Explication:

Le usermod commande modifiera le /etc/group fichier pour répertorier le nom d'utilisateur spécifié dans la ligne correspondant à ce groupe. Si tu cours grep <groupname> /etc/group, vous devriez voir votre nom d'utilisateur dans la sortie.

Sous Linux, chaque processus est affecté à un utilisateur et à des groupes, et tous les processus enfants héritent de l'utilisateur et des groupes du processus parent. Donc, pour que ce changement prenne effet et se propage, vous devez vous déconnecter et vous reconnecter (à quel point /etc/group est lu et utilisé). Sur Wayland, j'ai trouvé qu'un redémarrage complet était nécessaire.

Si vous exécutez la commande groups, vous pouvez voir si le processus en cours a les groupes attendus ou non.