Vous n'êtes pas identifié(e).
Bonjour à tous,
Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.
Nous travaillons à la sécurisation de nos système.
Plusieurs de nos applicatif se connectent en super-utilisateur (postgres) et utilisent la fonction pg_read_file pour allé lire dans un fichier une valeur SITE qui indique sur quel site l'outil travaille.
Nous avons créé des "utilisateurs applicatifs", en restreignant les droits (delete interdit, select/insert/update uniquement sur certaines tables de certains schémas) et apparemment la fonction pg_read_file ne marche plus.
J'ai lu dans la Doc que "L'utilisation de ces fonctions est restreinte aux superutilisateurs".
Y a t'il un moyen de contourner ce problème ? ou existe t'il une autre fonction utilisable par un simple utilisateur ?
Merci pour les réponses.
Hors ligne
Il vous suffit de créer une fonction de type security definer qui fait appel à cette fonction. La nouvelle fonction doit évidemment être créé par un superutilisateur. Par exemple :
mortimer=# create function su_read_file(text, bigint, bigint) returns text language sql security definer as $$
mortimer$# select pg_read_file($1, $2, $3);
mortimer$# $$;
CREATE FUNCTION
mortimer=# \q
guillaume@laptop:~$ psql -U a mortimer
psql (9.0.4)
Type "help" for help.
mortimer=> select pg_read_file('postgresql.conf',1,200);
ERROR: must be superuser to read files
mortimer=> select su_read_file('postgresql.conf',1,200);
su_read_file
--------------------------------------------
----------------------------- +
# PostgreSQL configuration file +
# ----------------------------- +
# +
# This file consists of lines of the form:+
# +
# name = value +
# +
# (The "=" is optional.) Whitespace ma
(1 row)
Guillaume.
Hors ligne