Portál AbcLinuxu, 10. května 2024 11:57


Dotaz: Postgresql práva execute na funkci z extension pglogical

20.1.2020 10:56 majales | skóre: 29 | blog: Majales
Postgresql práva execute na funkci z extension pglogical
Přečteno: 1767×
Odpovědět | Admin
Zdravím, Snažím se nastavit práva execute pro uživatele postgresu na funkci z extension a nedaří se mi to.
postgres=# \df+ pglogical.show_subscription_status
List of functions
-[ RECORD 1 ]-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Schema              | pglogical
Name                | show_subscription_status
Result data type    | SETOF record
Argument data types | subscription_name name DEFAULT NULL::name, OUT subscription_name text, OUT status text, OUT provider_node text, OUT provider_dsn text, OUT slot_name text, OUT replication_sets text[], OUT forward_origins text[]
Type                | normal
Security            | invoker
Volatility          | stable
Owner               | postgres
Language            | c
Source code         | pglogical_show_subscription_status
Description         | 
postgres@mypostgres:~$ psql mydb
psql (9.5.19)
Type "help" for help.

mydb=# SHOW search_path;
-[ RECORD 1 ]----------------
search_path | "$user", public

mydb=# SET search_path TO pglogical;
SET
mydb=# SHOW search_path;
-[ RECORD 1 ]----------
search_path | pglogical
mydb=# \dn+
List of schemas
-[ RECORD 1 ]-----+-----------------------
Name              | pglogical
Owner             | postgres
Access privileges | 
Description       | 
-[ RECORD 2 ]-----+-----------------------
Name              | public
Owner             | postgres
Access privileges | postgres=UC/postgres  +
                  | =UC/postgres
Description       | standard public schema
mydb=# grant execute on function pglogical.show_subscription_status() to myuser;
ERROR:  function pglogical.show_subscription_status() does not exist

mydb=# SELECT subscription_name, status FROM pglogical.show_subscription_status();
-[ RECORD 1 ]-----+-------------------
subscription_name | mydb_partial_set
status            | replicating
Netušíte co dělám špatně? Případně jak ta práva nastavit?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.1.2020 15:30 Lyco | skóre: 14 | blog: Lyco
Rozbalit Rozbalit vše Re: Postgresql práva execute na funkci z extension pglogical
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není problém v tom, že funkce show_subscription_status() bez parametrů neexistuje?

Zkusil bych to bez těch kulatých závorek.
Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
20.1.2020 22:47 majales | skóre: 29 | blog: Majales
Rozbalit Rozbalit vše Re: Postgresql práva execute na funkci z extension pglogical
Bohužel to asi bude v něčem jiném.. V dokumentaci jsem našel, k přístupu k extension jsou potřeba práva superuser. pokud je uživatel superuser tak se k informaci dostane. Pokusil jsem se to oklamat vytvořením pohledu a přidáním práv uživateli pro ten pohled, ale neuspěl jsem. Postgres moc neovládám, takže mi to třeba někdo vysvětlí.
22.1.2020 16:04 Tomáš
Rozbalit Rozbalit vše Re: Postgresql práva execute na funkci z extension pglogical
Pohledem to neobejdeš. Když si ale vytvoříš vlastní funkci, ve které budeš volat tu požadovanou, můžeš si ji definovat CREATE FUNCTION ... SECURITY DEFINER, uživateli dáš právo volat tvou funkci, ale to co se děje uvnitř se provádí s právy vlastníka funkce. Tím můžeš uvnitř funkce dělat věci ke kterým nemá práva ten co ji spustil, ale má k nim práva ten, co funkci napsal. Snad to nepopisuju moc kostrbatě :).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.