Quelle commande dois-je utiliser pour supprimer un utilisateur d'un groupe dans Debian?
Lors de l'ajout d'un utilisateur à un groupe, cela peut être fait avec:
usermod -a -G group user
Cependant, je n'ai pas pu trouver une commande similaire (accepter un groupe et un utilisateur comme arguments) pour supprimer l'utilisateur du groupe. Le plus proche que j'ai pu obtenir est:
usermod -G all,existing,groups,except,for,group user
Existe-t-il une commande comme usermod OPTION group user
avec OPTION une option pour que usermod
(ou un programme similaire) supprime l'utilisateur du groupe?
Vous pouvez utiliser gpasswd
:
# gpasswd -d user group
alors la nouvelle configuration de groupe sera assignée à la prochaine connexion, au moins sur Debian. Si l'utilisateur est connecté, les effets de la commande ne sont pas visibles immédiatement.
Sur Debian, le paquetage adduser
contient un programme deluser
qui supprime un utilisateur d'un groupe si vous passez les deux en arguments:
deluser user group
Si votre distribution n'a pas adduser
, vous pouvez modifier /etc/group
et /etc/gshadow
manuellement.
vigr
vigr -s
usermod -G "" username
supprime tous les groupes secondaires/supplémentaires de username, les laissant comme membre de leur groupe principal uniquement. cela a fonctionné dans Solaris 5.9
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
délimité par le :
personnage.
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 éditer le fichier /etc/group
et supprimez la référence thisuser
de l'entrée de ligne thatgroup
, par exemple,
la ligne d'origine ressemble à ceci:
thatgroup:x:1274:someuser,thisuser,anotheruser
après modification doit ê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'utilisateur, le cas échéant (c'est-à-dire si l'utilisateur est actuellement connecté). La modification prendra effet la prochaine fois que l'utilisateur se connectera.
Vous pouvez utiliser la commande ci-dessous sur les distributions SUSE (et, apparemment, pas d'autres).
usermod -R groupenom d'utilisateur
où group
est le groupe dont vous souhaitez supprimer l'utilisateur et user_name
l'utilisateur que vous souhaitez supprimer du groupe. Par exemple,
usermod -R root imnottheroot
Considérer:
abc2
nom de groupe: newgroup11
Tâche: suppression de l'utilisateur 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 supprimer un utilisateur du groupe en exécutant la commande usermod sans l'option -a. Par exemple, en exécutant "usermod -G nom d'utilisateur group1", l'utilisateur sera ajouté au groupe1 et le supprimera de tous les autres groupes où il se trouve. N'oubliez pas que vous pouvez conserver l'utilisateur dans différents groupes en répertoriant les noms des groupes, séparés par une virgule.
Pour continuer à utiliser usermod dans une distribution (comme Fedora) qui n'a pas d'option de suppression, où user = bob et group = deletethisgroup, la commande serait:
usermod -G `cat /etc/group | grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob
Les canaux (1) récupèrent toutes les entrées de groupe auxquelles appartient l'utilisateur, (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 pouvez mettre tout cela dans un script bash qui prend l'utilisateur et le groupe à supprimer comme paramètres. awk pourrait être utilisé pour raccourcir la fin mais je voulais m'en tenir à grep, cut, tr et sed.
Supposons que sername = student et groupname = research, donc pour supprimer l'utilisateur student
du groupe research
, il faut procéder comme suit:
gpasswd -d student research