Comment retirer un utilisateur d'un groupe ?

Résolu
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   -  
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

11 réponses

Tauto
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Supprime-le directement dans "/etc/group" ;-))
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Normalement ça devrait suffire pour les 4 cas :
sed '/^admins:/ s/,*santiago//;s/:,/:/' /etc/group
;-))
0
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   209
 
Merci Tauto, c'est fachement plus simple.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   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
-1
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   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 ?

-1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Essaie ça :
sed 's/,*\banne\b//;s/:,/:/'
;-))
-1
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   209
 
Vachement balese, ca marche !
Mais c'est quoi au juste ce \b ?
Je ne le trouve pas dans les specifications des expressions regulieres.
-1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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" .
0
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   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)

-1
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   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 ?
-1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Voir les explications dans la FAQ : SED - Le remplacement de variables ;-))
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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 ;-)) ).
-1