Vous n'êtes pas identifié(e).
Bonjour,
Désolé pour ce titre pas très explicite, je pense être plus clair dans mes explications. Je rencontre le problème que je vous détaille ci-dessous :
J’ai décidé de créer mes utilisateurs à partir d’un fichier plain text (écrit en SQL). Mes utilisateurs ouvrent le fichier plain text, y spécifie leur nom de user qui s’écrit prénom.nom et leur mot de passe. Après cette étape, j’ouvre mon invite de commande et y tape le code suivant :
C:\Program Files\PostgreSQL\9.6\bin>createuser -U rmayou -h SRV-GREGIB -p 5432 prénom.nom < "C:\Users\rmayou\Desktop\postgresl_administration\CHARGEMENT_UTILISATEURS\recup_user.sql"
Le fichier plain text spécifié contient le code suivant :
--
-- PostgreSQL database cluster dump
--
SET default_transaction_read_only = off;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
--
-- Roles
--
CREATE ROLE "prenom.nom";
ALTER ROLE "prenom.nom" WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD ‘mot_de_passe';
--
-- PostgreSQL database cluster dump complete
--
Dans l’invite de commande j’ai un retour positif avec création de l’utilisateur lorsque je m’octroie les droits de superuser. J’ai un retour négatif lorsque je ne m’octroie pas ce droit :
…..CHARGEMENT_UTILISATEURS\recup_user.sql"
Mot de passe :
createuser : la création du nouvel rôle a échoué : ERROR: permission denied to create role
Chose très bizarre est que dans un cas comme dans l’autre, mon rôle d’utilisateur est rattaché un rôle de groupe utilisateur qui lui a le droit de superuser. En connaissance de cet élément je devrais dans les deux cas pouvoir créer les utilisateurs, sachant que mon rôle a le droit INHERIT.
Auriez-vous déjà rencontré un problème de ce genre ?
Merci d’avance, Rémi
Hors ligne
Il y a une différence entre les attributs (SUPERUSER, CREATEDB, CREATEUSER, REPLICATION, etc) et les droits. Les droits s'héritent automatiquement si l'attribut INHERIT est activé, les attributs ne s'héritent jamais automatiquement.
Donc ce comportement est normal
Guillaume.
Hors ligne
Que je comprenne bien. Les droits correspondent à : SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE et USAGE (https://docs.postgresql.fr/8.1/privileges.html).
C'est de ça qu'un utilisateur hérite de son groupe utilisateur.
Parcontre si le groupe utilisateur peut créer des rôles, grâce à son attribut, et que l'utilisateur ne le peut pas, parcequ'il ne possède pas l'attribut (pour reprendre mon exemple). Alors malgré l'appartenance de l'utilisateur au groupe, il ne pourra toujours pas créer de nouveaux utilisateurs. Ai-je bien saisi? De toute façon je vais faire un test.
Hors ligne
Oui. Le seul moyen de récupérer les attribut, c'est de faire un SET nom_role.
Guillaume.
Hors ligne
Merci Gleu pour ces infos. Je n'avais pas du tout saisi cette différence entre attributs et droits.
Bonne journée,
Rémi
Hors ligne
Je pense qu'ils font une différence entre les deux parce que les attributs concernent des objets globaux (c'est-à-dire non spécifiques à une base de données) alors que les droits concernent des objets locaux (donc sur une seule base de données). Pas sûr que ce soit la raison réelle mais c'est la seule qui me vient à l'esprit.
Guillaume.
Hors ligne