Forum Programmation.perl Liste des groupes d'un utilisateur

Posté par  .
Étiquettes : aucune
0
24
mar.
2010
Bonjour,

Je souhaite récupérer la liste des groupes d'un utilisateur (je parle bien d'une liste des groupes et pas seulement le groupe principal).

1/ Je ne peux pas faire de open(FD_IN, '< /etc/group') car potentiellement il peut s'agir d'utilisateurs d'un active directory, donc pas dans le /etc/group.
2/ Ma solution de secours c'est de faire un `id login` et de récupérer la liste, mais j'aimerais un truc un peu plus propre :)

J'ai trouvé un getgrname mais ça ne donne que le groupe principal. Existe-il une fonction dédiée ?

Merci
  • # correctif

    Posté par  . Évalué à 1.

    J'ai trouvé un getpwname mais ça ne donne que le groupe principal. Existe-il une fonction dédiée ?
  • # en shell : groups

    Posté par  . Évalué à 3.

    dans le shell d'un utilisateur la commande groups donne les groupes de l'utilsateur courant (AD compris)

    groups user
    te donnera les groupes de l'utilisateur "user"

    a defaut de trouver en perl tu peux passer par un appel system (c'est moche, mais ca doit marcher)
    • [^] # Re: en shell : groups

      Posté par  . Évalué à 1.

      `id` ou `groups` ça ne va pas changer grand chose ;)

      Par contre que veux tu dire par un appel système ? As tu un exemple ?
      • [^] # Re: en shell : groups

        Posté par  . Évalué à 2.

        parce que ID ou GROUPS sont des commandes en ligne de commande shell (pas en perl)

        si j'en crois : http://fr.selfhtml.org/cgiperl/fonctions/appelssysteme.htm
        en perl il faudrait par exemple faire

        my @resultat=qx(groups $user);
        print $resultat;


        à condition que l'outil "groups" soit disponible avec ton shell.

        sinon il faut regarder les modules LDAP/AD de perl
        qui permettent peut-etre de chercher une info dans un annuaire ldap
  • # getgrent

    Posté par  (site web personnel) . Évalué à 1.

    Je ferais

    while (($name, $passwd, $gid, $members) = getgrent()) {
    # Prendre $name ou $gid si $login est dans $members
    }
    • [^] # Re: getgrent

      Posté par  . Évalué à 1.

      Le problème du getgrent est qu'il ne fournit que les listes locaux, donc je n'obtiens pas les utilisateurs de mon AD :(
      • [^] # Re: getgrent

        Posté par  (site web personnel) . Évalué à 1.

        Ton systeme a un probleme de config alors...

        getent groups te les liste pas non plus ?

        je vois pas comment id les listerait en fait dans ce cas
  • # getent

    Posté par  . Évalué à 1.

    et pourquoi pas un simple
    getent group

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.