Comment retirer un utilisateur d'un groupe ?

[Résolu/Fermé]
Signaler
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
-
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
-
Salut a tous,
Je cherche une commande pour retirer un utilisateur d'un groupe.
J'ai cree l'utilisateur santiago et je l'ai ajoute au groupes admins et webmasters.
useradd -c 'Santiago Diez' -m santiago
usermod -a -G admins santiago
usermod -a -G webmasters santiago

Mais comment faire pour le retirer du groupe admins ?
Il y a bien sur la commande
usermod -G webmasters santiago

Mais comment faire si on ne connait pas la liste des groupes auquels il appartient ?
Je voudrais pouvoir retirer une personne quelconque d'un groupe sans avoir besoin de connaitre tous les groupes auquels elle appartient.
Quelqu'un a une idee ?
Merci pour votre aide.
Santiago

11 réponses

il y a plus simple pour retirer l'utilisateur d'un groupe :

deluser nomdel'utilisateur nomdugroupe
(dans ton cas ça donne : deluser santiago admins )

et pour savoir dans quel groupe un utilisateur se trouve :

groups nomdel'utilisateur
(dans ton cas, ça donne : groups santiago )

Tauto ;)
14
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Salut,

Supprime-le directement dans "/etc/group" ;-))
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Normalement ça devrait suffire pour les 4 cas :
sed '/^admins:/ s/,*santiago//;s/:,/:/' /etc/group
;-))
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
Merci Tauto, c'est fachement plus simple.
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
ok je me demandais s'il y avait pas une commande pour le faire direct.
mais comme j'ajoute et j'enleve souvent des users de certains groupes, je voudrais le faire en ligne de commande.

en m'aidant d'une commande que tu m'avais donne la, j'ai pense ecrire le script suivant :
sed '/^admins:/ s/:santiago$/:/' /etc/group
sed '/^admins:/ s/:santiago,/:/' /etc/group
sed '/^admins:/ s/,santiago,/,/' /etc/group
sed '/^admins:/ s/,santiago$//' /etc/group

Est il possible de faire tous ces remplacement en un seul ou dois-je effectivement envoyer 4 commandes ?
Merci de ta reponse.
Santiago
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
la je comprends pas bien.
ta commande sed se decompose-t-elle bien comme suit ?
sed '/chainepourselectionnerleslignes/ s/recherche1/remplacement1/;s/recherche2/remplacement2/' chemin/vers/un/fichier

d'apres ta proposition, tout me porte a croire que les remplacement se font sequentielement et que donc le 2e remplacement peut modifier une chaine generee par le premier remplacement

il va chercher une chaine de la forme ",santiago" ou "santiago" et l'effacer
puis chercher une chaine de la forme ":," et la remplacer par ":"

le probleme se pose avec l'exemple suivant :
$ grep '^admins:' /etc/group
admins:x:104:johanne,santiago,anne,annette
$ sed '/^admins:/ s/,*anne//;s/:,/:/' /etc/group
admins:x:104:joh,santiagotte

il faut donc entourer l'user des caractere delimiteurs
:anne$ (s'il n'y a qu'un utilisateur)
:anne, (s'il y en a plusieurs et qu'il est premier)
,anne, (s'il y en a plusieurs et qu'il est au milieu)
,anne$ (s'il y en a plusieurs et qu'il est dernier)

Qu'en pense tu ?

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Essaie ça :
sed 's/,*\banne\b//;s/:,/:/'
;-))
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
Vachement balese, ca marche !
Mais c'est quoi au juste ce \b ?
Je ne le trouve pas dans les specifications des expressions regulieres.
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
C'est ce qu'on appelle (et qui permet de définir) une "frontière de mot" (ou limite).

Tu en trouveras une explication succincte dans le "man grep" .
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
The symbol \b matches the empty string at the edge of a word.

Ca me parait clair, mais qu'est ce qu'un "mot" et quelles sont ses limites ?
Un "mot" est il une suite de lettres de l'alphabet uniquement ? Dans ce cas quel alphabet ?
Et s'il y a des chiffres ? Font ils parti du "mot" ?

Avant de poster, j'ai quand meme fait une batterie de tests :
Un "mot" semble etre toute suite de caractere alpha-numeriques.
Ceci inclus - d'apres mes tests - les chiffres, minuscules et majuscules (y compris les lettres comme é ou ç)
"C'est-a-dire" est par exemple compose de 4 mots.

Tu confirmes ? Ai-je oublie quelquechose ?

Merci infiniment de prendre autant de temps pour partager tes connaissances. Mon pere disait souvent :
"Nunca te acostaras
Sin saber una cosa mas"

En espagnol, ca rime et en francais ca donne :
"Ne va jamais au lit
Sans avoir appris quelquechose"

Bon ben c'est cool, j'ai fini ma journee ;o)

Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
J'ai un nouveau probleme. Je voudrais comme explique plus haut mettre cela dans un script.
$ cat /usr/local/bin/groupdeluser
#!/bin/bash
sed '/^$1:/ s/,*$2//;s/:,/:/' /etc/group

A cause de la syntaxe de sed qui utilise des quotes, mes variables $1 et $2 ne sont pas interpretees.
J'ai essaye avec des guillemets :
$ cat /usr/local/bin/groupdeluser
#!/bin/bash
sed "/^$1:/ s/,*$2//;s/:,/:/" /etc/group

Visiblement ca marche. Est ce qu'il y a un risque a utiliser le guillemet plutot que la quote ?
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Voir les explications dans la FAQ : SED - Le remplacement de variables ;-))
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Je ne suis pas un grand spécialiste des regex (voir plutôt avec "lami20j" pour ça), je m'en démerde un peu à ma sauce, mais je n'ai pas assez de notions pour en expliquer certaines syntaxes sans tomber dans les travers et les sortir sûrement de leur contexte initial.

Désolé.

Merci pour la citation de ton papa (qui au passage vient du même pays que le mien, enfin à côté, catalogne oblige ;-)) ).