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

#1 13/04/2012 10:57:37

NicoFromIGN
Membre

Utilisation de template_postgis et droits d'accès

Bonjour.

Je m'interroge sur l'aspect suivant :

Je crée un base spatiale en utilisant le template_postgis qui a été créé à l'installation de PostGIS.
Je précise bien un propriétaire autre que l'utilisateur postgres (cet autre utilisateur a bien le droit CREATEDB, mais il n'est pas Superutilisateur).
Résultat : les 2 tables geometry_columns et spatial_ref_sys (ainsi que toutes les fonctions) issues du template conservent postgres comme propriétaire.

Problème : mon utilisateur propriétaire de la base ne peut pas accéder aux infos des 2 tables de sa base, à moins que postgres  en modifie les droits. Cela me parait illogique. Y a-t-il un remède à cela?

Faut-il forcément être Superutilisateur pour créer des bases de données spatiales et éventuellement en modifier les droits pour accès d'un utilisateur de plus bas niveau?

Hors ligne

#2 13/04/2012 11:05:33

gleu
Administrateur

Re : Utilisation de template_postgis et droits d'accès

Quel utilisateur utilisez-vous pour ajouter les objets dans cette nouvelle base ? Essayez de donner plutôt les commandes que vous exécutez, ça permettra d'y voir plus clair.


Guillaume.

Hors ligne

#3 13/04/2012 13:29:57

NicoFromIGN
Membre

Re : Utilisation de template_postgis et droits d'accès

*Je travaille avec pgAdmin III. Je réalise mes tests sur une instance de PostgreSQL 8.3 installé en local (localhost).
*J'ai tout d'abord créé un nouvel utilisateur 'eleve' à partir d'une connexion avec le superutilisateur 'postgres'. Je lui ai accordé le droit CREATEDB (ainsi d'ailleurs que CREATEROLE en vue d'autres tests):
CREATE ROLE eleve LOGIN
  ENCRYPTED PASSWORD 'md5dcb3b02a08cd9eb809fba37d0c9b010b'
  NOSUPERUSER NOINHERIT CREATEDB CREATEROLE;
COMMENT ON ROLE eleve IS 'mdp=toto';
*J'ai ensuite créé une nouvelle connexion au serveur (localhost sur port 5432), mais cette fois-ci avec mon nouvel utilisateur 'eleve'. Je travaille désormais sur cette connexion.
*Je crée alors ma nouvelle base en utilisant le template_postgis et en précisant mon utilisateur 'eleve' comme propriétaire:
CREATE DATABASE "Maspatialdatabase"
  WITH ENCODING='LATIN9'
       OWNER=eleve
       TEMPLATE=template_postgis;
*Ma nouvelle base est bien créée. Si je cherche à visualiser mes deux tables spatiales dans pgAdmin, celui-ci me prévient 'ERROR: permission denied for relation geometry_columns' par exemple. Effectivement, c'est 'postgres' qui en est le propriétaire. Cela se confirme si je cherche à ajouter des enregistrements dans la table via SELECT AddGeometryColumn(...).
*NB : j'ai le même résultat si je passe en ligne de commande :
createdb -O eleve T template_postgis -U eleve my_spatial_database

Hors ligne

#4 13/04/2012 13:44:03

gleu
Administrateur

Re : Utilisation de template_postgis et droits d'accès

Le problème vient directement de la base template_postgis. Dans cette base, les deux tables dont vous parlez doivent déjà avoir comme propriétaire l'utilisateur postgres. Connectez-vous sur cette base, et changez le propriétaire. La prochaine création devrait bien se passer.

Pour infos, CREATE DATABASE ne fait que copier l'autre base. Il n'y a aucun changement de réalisé. Par exemple, le propriétaire et les droits restent identiques à ceux des objets copiés de la base template.


Guillaume.

Hors ligne

#5 13/04/2012 14:10:50

NicoFromIGN
Membre

Re : Utilisation de template_postgis et droits d'accès

Merci.
Effectivement template_postgis a bien pour propriétaire postgres, mais n'est-ce pas logique puisque cette base découle de l'installation initiale de PostGIS? (au même titre que les bases 'postgres', 'postgis', 'template0' et 'template1').
Si je change le propriétaire de 'template_postgis' (ou des 2 tables spatiales) par 'eleve', le problème ne sera que reporté à la prochaine création de base avec un autre utilisateur, non?

Dernière modification par NicoFromIGN (13/04/2012 14:29:00)

Hors ligne

#6 13/04/2012 17:34:59

gleu
Administrateur

Re : Utilisation de template_postgis et droits d'accès

Si je change le propriétaire de 'template_postgis' (ou des 2 tables spatiales) par 'eleve', le problème ne sera que reporté à la prochaine création de base avec un autre utilisateur, non?

Oui, tout à fait. Mais au moins, vous pourrez faire un REASSIGN après la création de la base.


Guillaume.

Hors ligne

Pied de page des forums