Comment supprimer un user d'un groupe?

Quelle command dois-je utiliser pour supprimer un user d'un groupe dans Debian?

Lors de l'ajout d'un user à un groupe, cela peut se faire avec:

usermod -a -G group user 

Cependant, je n'ai pas pu find une command similaire (en acceptant un groupe et un user comme arguments) pour retirer l'user du groupe. Le plus proche que je pourrais get est:

 usermod -G all,existing,groups,except,for,group user 

Existe-t-il une command comme usermod OPTION group user avec OPTION une option pour faire usermod (ou un programme similaire) supprimer l'user du groupe?

Vous pouvez utiliser gpasswd :

 # gpasswd -d user group 

alors la nouvelle configuration du groupe sera assignée à la prochaine connection, au less sur Debian. Si l'user est connecté, les effets de la command ne sont pas visibles immédiatement.

Sur Debian, le package adduser contient un programme deluser qui supprime un user d'un groupe si vous passez en tant qu'arguments:

 deluser user group 

Si votre dissortingbution n'a pas adduser , vous pouvez éditer /etc/group et /etc/gshadow manuellement.

 vigr vigr -s 
 usermod -G "" username 

supprime tous les groupes secondaires / supplémentaires du nom d' user , en les laissant en tant que membre de leur groupe principal uniquement. cela a fonctionné dans Solaris 5.9

C'est l'approche "vieille école" …

La plupart des systèmes * nix conservent les informations de groupe dans un file text clair /etc/group , où

  • chaque ligne contient les champs

    • nom de groupe
    • mot de passe
    • GID, et
    • list d'user

    délimité par le caractère:.

  • le champ user_list est une list de noms d'user, séparés par des virgules.

Supposons maintenant que vous souhaitiez supprimer un user nommé thisuser d'un groupe nommé thatgroup . Commencez par sauvegarder /etc/group , puis utilisez l'éditeur de votre preference avec les privilèges su pour éditer le file /etc/group et supprimez la reference thisuser de l'input de ligne thatgroup , par exemple,

ligne originale est quelque chose comme ceci:

thatgroup :x:1274:someuser, thisuser ,anotheruser

après l'édition devrait être laissé comme ceci:

thatgroup :x:1274:someuser,anotheruser

Comme pour toutes les autres réponses, cela n'affectera pas les sessions actuelles de l'user, le cas échéant (c'est-à-dire si l'user est actuellement connecté). La modification prendra effet la prochaine fois que l'user se connecte.

Considérer:

  • nom d'user: abc2
  • nom du groupe: newgroup11

  • Tâche: Suppression de l'user abc2 du groupe newgroup11

 [root@home1 ~]# groups abc2 abc2 : abc2 [root@home1 ~]# usermod -G newgroup11 abc2 [root@home1 ~]# groups abc2 abc2 : abc2 newgroup11 [root@home1 ~]# usermod -G newgroup11 abc2 [root@home1 ~]# usermod -G abc2 abc2 [root@home1 ~]# groups abc2 abc2 : abc2 

** Veuillez me corriger si je me trompe. **

Vous pouvez utiliser la command ci-dessous sur les dissortingbutions SUSE (et, apparemment, pas d'autres ).

  usermod -R groupe nom_user 

group est le groupe sur lequel vous souhaitez supprimer l'user et user_name l'user que vous souhaitez supprimer du groupe. Par exemple,

 usermod -R root imnottheroot 

Pour continuer à utiliser usermod dans une dissortingbution (comme Fedora) qui n'a pas d'option de suppression, où user = bob et group = deletethisgroup, la command serait:

 usermod -G `cat /etc/group | grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob 

Les tuyaux (1) obtiennent toutes les inputs de groupe auxquelles l'user appartient, (2) sortent celui qui doit être supprimé, (3) renvoie la première colonne (nom de groupe), remplace la nouvelle ligne par une virgule et supprime la virgule.

Bien sûr, vous pouvez mettre tout cela dans un script bash qui prend l'user et le groupe à supprimer en tant que parameters. awk pourrait être utilisé pour raccourcir la fin mais je voulais restr en grep, cut, tr et sed.

 pw groupmod "groupname|gid" -d "username|uid" 

Une solution si vous utilisez CSH, pour une raison quelconque.