Vous n'êtes pas identifié(e).

#1 13/08/2009 08:59:27

Jiff
Membre

correspondance grantor grantee group

Salut,

Je suis sur une petite appli qui doit gérer les droits PG pour une plus grosse et je bloque sur cette correspondance.

Le propriétaire de la base est aussi SU (pour accès aux tables système), et pour test, j'ai créé un groupe 'groupe01' & un user 'user01'.

SELECT * FROM pg_group   me renvoie bien la correspondance user01-groupe01, par contre, je n'arrive pas à trouver ce qu'il me faut pour la correspondance propriétaire-group01 (afin de séparer les groupes de cette base de ceux des autres bases.)

SELECT * FROM pg_auth_members   ne renvoie un row QUE si un user est déclaré dans le groupe (et là, ça va, puisque je retrouve mon grantor.)

Connaîtriez-vous une solution à mon casse-ctête?  (sinon, la seule solution que je vois serait de créer un "dummy_user", appartenant à chaque groupe et n'ayant pas les droits de connexion, mais c'est plutôt bancal et potentiellement dangereux en cas d'oubli.)

Hors ligne

#2 13/08/2009 11:50:24

gleu
Administrateur

Re : correspondance grantor grantee group

Vous ne trouvez pas parce que ça n'existe pas dans PostgreSQL. Les utilisateurs et les groupes sont déclarés pour l'instance. Ils ne font pas partie d'une base de données particulière, ils sont disponibles sur toutes.

(en espérant que j'ai bien compris la question...)


Guillaume.

Hors ligne

#3 13/08/2009 15:34:06

Jiff
Membre

Re : correspondance grantor grantee group

Pour l'universalité des groups/users dans un même cluster PG, je l'ai bien compris puisque les docs sont claires et que je les "vois" à partir de ma base de test.

Je vais essayer d'être plus clair: Base = DB1 - Owner = ZEBOSS - Groupe (vide pour l'instant) créé par ZEBOSS = GRP1
SELECT* FROM pg_auth_members;   => Table vide
CREATE GROUP grp1;
SELECT* FROM pg_auth_members;   => Table toujours vide >>> ICI se tient mon PB: comment récupérer seulement les noms/oids des groupes créés par ZEBOSS?
CREATE USER usr1 IN GROUP grp1;
SELECT* FROM pg_auth_members;  => 162111 / 162113 / 156540 / F <=> Là c'est bon, MAIS il a fallu ajouter un user dans le groupe pour qu'il devienne "visible"

PB: Comment récupérer tous les groupes (VIDES et NON-VIDES [mais là, je sais faire]), créés par ZEBOSS ?

Jiff

PS: Me dit pas vous, j'ai l'impression d'être un vieux.
PS2: J'ai malheureusement l'impression qu'il va me falloir mettre ces groupes vides dans une table de référence pour savoir qu'il appartiennent à ZEBOSS!?

Dernière modification par Jiff (13/08/2009 15:36:27)

Hors ligne

#4 13/08/2009 17:03:23

gleu
Administrateur

Re : correspondance grantor grantee group

Ceci doit fonctionner :

SELECT pg_authid.rolname AS groname, pg_authid.oid AS grosysid, ARRAY( SELECT pg_auth_members.member
           FROM pg_auth_members
          WHERE pg_auth_members.roleid = pg_authid.oid) AS grolist
   FROM pg_authid
  WHERE NOT pg_authid.rolcanlogin;

C'est le code de la vue pg_group.


Guillaume.

Hors ligne

#5 13/08/2009 17:04:18

gleu
Administrateur

Re : correspondance grantor grantee group

Concernant le créateur des rôles, cette information n'est pas conservée.


Guillaume.

Hors ligne

#6 13/08/2009 17:08:05

Jiff
Membre

Re : correspondance grantor grantee group

>> Concernant le créateur des rôles, cette information n'est pas conservée.

Ok, j'ai ma réponse: ça confirme keskejpensè; il *faut* que je double la manip de création avec l'inclusion du nom de groupe dans une table séparée.

Merci

Hors ligne

Pied de page des forums