Comment retirer un utilisateur d'un groupe ?
Résolu
santiago69
Messages postés
485
Statut
Membre
-
santiago69 Messages postés 485 Statut Membre -
santiago69 Messages postés 485 Statut Membre -
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.
Mais comment faire pour le retirer du groupe admins ?
Il y a bien sur la commande
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
--
Il y a 10 types de personnes dans le monde
Ceux qui comprennent le binaire et les autres.
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
--
Il y a 10 types de personnes dans le monde
Ceux qui comprennent le binaire et les autres.
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 ;) -
Salut,
Supprime-le directement dans "/etc/group" ;-))
-
Normalement ça devrait suffire pour les 4 cas :
sed '/^admins:/ s/,*santiago//;s/:,/:/' /etc/group
;-))
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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
-
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 ?
-
Essaie ça :
sed 's/,*\banne\b//;s/:,/:/'
;-))
-
Vachement balese, ca marche !
Mais c'est quoi au juste ce \b ?
Je ne le trouve pas dans les specifications des expressions regulieres.
-
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)
-
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 ?
-
Voir les explications dans la FAQ : SED - Le remplacement de variables ;-))
-
-
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 ;-)) ).