Comment supprimer un utilisateur d'un groupe?

343

Quelle commande devrais-je utiliser pour supprimer un utilisateur d'un groupe dans Debian?

Lorsque vous ajoutez un utilisateur à un groupe, vous pouvez le faire avec:

usermod -a -G group user

Cependant, je n'ai pas trouvé de commande similaire (acceptant un groupe et un utilisateur comme arguments) pour supprimer l'utilisateur du groupe. Le plus proche que je pourrais obtenir est:

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

Existe-t-il une commande comme usermod OPTION group useravec OPTION une option permettant de faire usermoddisparaître l’utilisateur du groupe (ou un programme similaire)?

Lekensteyn
la source
1
Pour les utilisateurs de Fedora qui se retrouvent ici, man usermod révèle dans les commentaires de l’option -G qu’une liste de tous les groupes actuels souhaitant être conservée EST le moyen de supprimer un groupe. Aucune option -R avec Fedora; vous devez utiliser l'approche de Lekensteyn qu'il essaie d'éviter.
Stephen

Réponses:

404

Vous pouvez utiliser gpasswd:

# gpasswd -d user group

alors le nouveau groupe config sera assigné à la prochaine connexion, au moins sur Debian. Si l'utilisateur est connecté, les effets de la commande ne sont pas visibles immédiatement.


la source
9
Parfait merci! gpasswd -a user grouppour ajouter l'utilisateur au groupe semble également plus agréable, surtout si une faute de frappe a été faite et l' -aoption est supprimée.
Lekensteyn
1
Ca ne marche pas pour moi Je reçois deux messages: a) Supprimer un utilisateur du groupe. b) gpasswd: l'utilisateur n'est pas membre du groupe. L'exécution du "groupe de membres" ne montre aucun changement.
Géoidesic
1
@geoidesic vous devez vous déconnecter et vous reconnecter pour voir l'effet
Wasif Hossain
1
Existe-t-il un moyen de rendre la modification effective sans avoir à se reconnecter?
Andy Fusniak
2
@geoidesic J'ai eu ces erreurs sur Centos 7. J'ai constaté que vous l'aviez, si vous essayiez de supprimer l'utilisateur de son groupe par défaut. Essayez de changer le groupe par défaut avec usermod -g user userpuis essayez de les supprimer.
PanPipes
175

Sur Debian, le adduserpaquet contient un deluserprogramme qui supprime un utilisateur d’un groupe si vous transmettez les deux en tant qu’arguments:

deluser user group

Si votre distribution n'en a pas adduser, vous pouvez éditer /etc/groupet /etc/gshadowmanuellement.

vigr
vigr -s
Gilles
la source
10
Je ne connaissais pas de programmes comme vigret vipw. Très utile si les pages de manuel sont trop éloignées :)
Lekensteyn
3
Alternativement, après modification, /etc/groupexécutez grpconvpour mettre à jour /etc/gshadowplutôt que de le modifier.
Cyrille
sudo deluser jenkins admin/ usr / sbin / deluser: vous ne pouvez pas supprimer l'utilisateur de son groupe principal.
Jonathan
@JonathanLeaders Chaque utilisateur doit appartenir à au moins un groupe. Utilisez usermodou vipwpour changer le groupe principal de l'utilisateur. Cette question concernait des groupes supplémentaires.
Gilles
Agréable. Il y a aussi la adduser $user $groupcommande plus simple à la place de usermod -x -y -z -....
ygoe
65
usermod -G "" username

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

utilisateur208145
la source
5
Testé dans CentOS 6.4; travaux.
aggregate1166877
1
Fonctionne également dans Ubuntu 12.04.
aggregate1166877
Et cela semble être le meilleur moyen de forcer les groupes secondaires à n’importe quelle liste de groupes, à l’exclusion de tous les groupes non répertoriés.
Sage
Testé et fonctionnant dans CentOS 7. Merci!
Tricky
14

C'est l'approche "old school" ...

La plupart des systèmes * nix conservent les informations de groupe dans un fichier texte brut /etc/group, où

  • chaque ligne contient les champs

    • nom de groupe
    • mot de passe
    • GID, et
    • liste d'utilisateur

    délimité par le :personnage.

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

Supposons maintenant que vous souhaitiez supprimer un utilisateur nommé thisuser d'un groupe nommé thatgroup. Commencez par sauvegarder /etc/group, puis utilisez l’éditeur de votre choix avec les privilèges su pour modifier le fichier /etc/group et supprimer la thisuserréférence de la thatgroupligne, par exemple,

La ligne originale ressemble à 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 en cours de l'utilisateur, le cas échéant (c'est-à-dire si l'utilisateur est actuellement connecté). La modification prendra effet à la prochaine connexion de l'utilisateur.

p57
la source
1
vigra déjà été mentionné pour l'édition /etc/groupmanuelle. Mes pages de manuel dit que les noms d'utilisateur sont séparés par des virgules et non par des deux-points. Le redémarrage n'est pas nécessaire, il vous suffit de vous reconnecter (ou de l'utiliser newgrp).
Lekensteyn
Pour aider les utilisateurs non-Debian qui se rendent sur ces rivages à la recherche d'indices ... cela peut suffire à Debian selon l'étendue de la question de OP, mais si vous l'utilisiez pour un système d'exploitation * BSD, vous auriez besoin de modifier le fichier en texte clair. ici comme mentionné, émettez un pwd_mkdb -p /etc/master.passwd pour utiliser cette liste.
danno
3

Vous pouvez utiliser la commande ci-dessous sur les distributions SUSE (et apparemment aucune autre ).

usermod -R groupe  nom_utilisateur

groupest le groupe dont vous souhaitez supprimer l'utilisateur et user_namel'utilisateur que vous souhaitez supprimer du groupe. Par exemple,

usermod -R root imnottheroot
Stavros Fan Koutsouropoulos
la source
1
Quel paquet fournit votre binaire usermod? Je demande à connaître la version, car le mien de shadow-utils-4.1.4.3 ne fournit pas l'option -R.
myroslav
3
Mon paquetage shadow 4.1.5.1-5 (Arch Linux) a une -Roption, mais cela signifie autre chose. Ce n'est pas Linux, je suppose.
Lekensteyn
3
Je ne suis pas sûr que ça va marcher. La page de manuel dit que -R: "-R, --root CHROOT_DIR Appliquez les modifications dans le répertoire CHROOT_DIR et utilisez les fichiers de configuration du répertoire CHROOT_DIR."
MikeKusold Le
2
La seule chose en rapport que je pouvais trouver était cette page de manuel oracle, mais il ne s’agit toujours pas de la même chose, alors cette réponse devrait peut-être être supprimée.
Kyrias
sudo usermod -R admin jenkinsusermod: chemin d'accès chroot non valide 'admin'
Jonathan
1

Considérer:

  • Nom d'utilisateur: abc2
  • nom de groupe: newgroup11

  • Tâche: Supprimer un utilisateur abc2du groupenewgroup11

[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. **

nouvel utilisateur
la source
1
Cela "fonctionne", mais uniquement parce que vous avez un seul groupe secondaire. usermod -G newgroup11 abc2vous mettra dans le groupe secondaire newgroup11. Puisque le groupe principal est abc2, vous vous retrouverez dans les deux groupes. usermod -g abc2 abc2aboutit à newgroup11être supprimé des groupes secondaires car il n'est plus mentionné. Donc, pour trois groupes différents ou plus, cette méthode ne fonctionnera pas. Voir les autres réponses impliquant gpasswdpour une meilleure commande.
Lekensteyn
1

Vous pouvez supprimer un utilisateur du groupe en exécutant la commande usermod sans l'option -a. Par exemple, en exécutant "usermod -G nomutilisateur groupe1", l'utilisateur sera ajouté au groupe1 et sera supprimé de tous les autres groupes où il se trouve. N'oubliez pas que vous pouvez conserver l'utilisateur dans différents groupes en listant les noms des groupes, séparés par des virgules.

Assistant
la source
1
Cette information a déjà été présentée plusieurs fois.
Scott
0

Pour continuer à utiliser usermod dans une distribution (comme Fedora) qui ne possède pas d’option de suppression, où user = bob et group = deletethisgroup, la commande est la suivante:

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 entrées de groupe auxquelles l'utilisateur appartient, (2) suppriment celle qui doit être supprimée, (3) renvoie la première colonne (nom du groupe), remplace la nouvelle ligne par une virgule et supprime la virgule de fin.

Bien sûr, vous pourriez mettre tout cela dans un script bash qui demande à l'utilisateur et au groupe d'être supprimés en tant que paramètres. awk pourrait être utilisé pour raccourcir la fin mais je voulais m'en tenir à grep, cut, tr and sed.

Stephen
la source
Selon cette page de manuel , gpasswd -d bob deletethisgroupest également disponible. Une raison pour laquelle vous ne l'utilisez pas?
Lekensteyn
Tout le monde ne veut pas mettre en place des mots de passe de groupe. Je proposais simplement une solution à l'aide de la commande référencée par la question sur une distribution particulière. Dans Fedora / RHEL / Centos avec gpasswd -d, l'utilisateur supprimé peut toujours rejoindre le groupe s'il a accès au mot de passe. En fait, cela augmente l'accès au groupe plutôt que de le refuser.
Stephen
J'ai compris que l'utilitaire est nommé gpasswdcar il est étroitement lié à /etc/passwd, mais gère plutôt des groupes. Contrairement à la passwdcommande plain qui ne contrôle que les mots de passe, gpasswdpeut également être utilisée pour gérer l'appartenance à un groupe. Un mot de passe de groupe n'est pas requis si vous êtes administrateur root ou de groupe.
Lekensteyn
Avez-vous lu le manuel de gpasswd? Pour Fedora / RHEL / CentOS, si vous lisez le manuel, il est indiqué que la commande "est utilisée pour administrer / etc / group et / etc / gshadow". En fait, cela n’a aucun effet sur / etc / passwd. Le manuel indique également que «les mots de passe de groupe constituent un problème de sécurité inhérent, car plusieurs personnes sont autorisées à connaître le mot de passe». En réalité, il ne gère pas l'appartenance à un groupe, il ouvre le groupe à TOUT utilisateur possédant le mot de passe. Un mot de passe de groupe n'est pas requis si vous êtes déjà MEMBRE du groupe.
Stephen
Un lien étroit s’apparentait à une dénomination et à des objectifs similaires. Je n’imaginais pas que le fichier / etc / passwd était en réalité géré par gpasswd. Notez que la "page de manuel" de mon premier commentaire renvoie à la page de manuel gpasswd de Fedora 13. gpasswd $groupVous pouvez définir le mot de passe du groupe qui cause le problème de sécurité que vous avez mentionné. Cependant, vous pouvez également ne pas avoir de mot de passe et utiliser gpasswd -d $user $grouppour supprimer un utilisateur comme décrit dans le premier commentaire et la réponse acceptée. Notez que cette commande ne demande pas de mot de passe de groupe et ne la modifie ni ne l'exige.
Lekensteyn
0

Supposons que nom d'utilisateur = étudiant et nom de groupe = recherche . Par conséquent, pour supprimer un studentutilisateur du researchgroupe, procédez comme suit:

gpasswd -d student research
ravi
la source
Pourquoi répéter quelque chose qui était là 6 ans plus tôt? C'est marqué comme une réponse acceptée!
Betlista
-1
pw groupmod "groupname|gid" -d "username|uid"

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

James
la source
-1

Pour supprimer un utilisateur d'un groupe, gpasswd est le meilleur utilitaire pour cette OMI.

Exemple de commande:

sudo gpasswd -d group user

* Informations d'aide *

Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    display this help message and exit
  -Q, --root CHROOT_DIR         directory to chroot into
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.
Brian Cotton
la source
1
Les arguments groupe et utilisateur sont échangés. En outre, c’est exactement ce que propose la réponse acceptée, ce message n’est pas vraiment utile?
Lekensteyn