Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako FB user koji nije SYSDBA da izvrši proceduru koja poziva sistemsku tabelu

[es] :: Firebird/Interbase :: Kako FB user koji nije SYSDBA da izvrši proceduru koja poziva sistemsku tabelu

[ Pregleda: 2346 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

galisnik
NS

Član broj: 18494
Poruke: 81
*.dynamic.sbb.co.yu.



Profil

icon Kako FB user koji nije SYSDBA da izvrši proceduru koja poziva sistemsku tabelu12.11.2007. u 21:29 - pre 200 meseci
Verzija Firebirda je 1.5.x
Uskladištena procedura ima select na tabelu RDB$RELATIONS (dakle sistemsku), a user nije sysdba. Iako je tom useru (tačnije ROLE-i čiji je on član) dodjeljen GRANT za izvršenje te procedure, FB javlja grešku da taj user nema privilegiju da je izvrši. Kako se to rješava, može li to uopše u FB 1.5 (ne igra mi 2.0 verzija, čak i ako ima rješenje za to u toj verziji)

Hvala unaprijed
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako FB user koji nije SYSDBA da izvrši proceduru koja poziva sistemsku tabelu13.11.2007. u 10:05 - pre 200 meseci
> Uskladištena procedura ima select na tabelu RDB$RELATIONS (dakle sistemsku), a user nije sysdba. Iako je tom useru (tačnije ROLE-i čiji je on član)
> dodjeljen GRANT za izvršenje te procedure, FB javlja grešku da taj user nema privilegiju da je izvrši. Ka

I sama procedura mora imati prava nad objektima koje koristi, dakle ako koristi tabele mora se dodeliti odgovarajuće pravo proceduri nad tim tabelama.
GRANT SELECT ON TABELA TO PROCEDURE NAZIV_PROCEDURE. Ako koristiš samo određene kolone iz tabele, grant možeš dodatno ograničiti na samo te kolone.
 
Odgovor na temu

galisnik
NS

Član broj: 18494
Poruke: 81
*.intens.co.yu.



Profil

icon Re: Kako FB user koji nije SYSDBA da izvrši proceduru koja poziva sistemsku tabelu13.11.2007. u 11:53 - pre 200 meseci
Hvala na odgovoru, medjutim, i dalje se FB buni zbog privilegija na sistemsku tabelu.
Imam sledece uradjeno kao SYSDBA:
CREATE ROLE R;
GRANT U TO R; /*U je user na tom serveru*/
GRANT SELECT ON RDB$RELATIONS TO SP;
/*imam procedure SP koja poziva:
select RDB$RELATION_NAME from RDB$RELATIONS where RDB$RELATION_NAME starting with 'TMP_' into :tmp
i kasnije: execute STATEMENT 'DROP TABLE ' || :tmp
*/
GRANT EXECUTE ON PROCEDURE SP TO R;

Ovo sad pokusava user U:
EXECUTE PROCEDURE SP;
/*
Message: isc_dsql_execute2 failed

SQL Message : -551
This user does not have privilege to perform this operation on this object.

Engine Code : 335544352
Engine Message :
no permission for execute access to PROCEDURE SP
*/

Evidentno je da Role R nema pravo da obrise tabelu, a ja sam zbunjen jer taj user U je uredno kreira sa CREATE TABLE, i kao vlasnik te tabele ne znam zasto je ne moze i obrisati.

Kao alat za administraciju koristim FlameRobin.
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako FB user koji nije SYSDBA da izvrši proceduru koja poziva sistemsku tabelu13.11.2007. u 13:36 - pre 200 meseci
> SQL Message : -551
> This user does not have privilege to perform this operation on this object.

Ako izbaciš DROP TABLE onda radi?

> Evidentno je da Role R nema pravo da obrise tabelu, a ja sam zbunjen jer taj user U je uredno kreira sa CREATE TABLE, i kao vlasnik te tabele
> ne znam zasto je ne moze i obrisati.

Ako se dobro sećam za EXECUTE STATEMENT važe nešto drugačija pravila za prava pristupa. Međutim ako si ti owner tih objekata (tabela i procedura) onda ti prava i ne trebaju.

> select RDB$RELATION_NAME from RDB$RELATIONS where RDB$RELATION_NAME starting with 'TMP_' into :tmp

Imaj na umu da ovo neće raditi ako ima više tabela koje počinju sa TMP_, bolje je da napišeš sa FOR SELECT.
 
Odgovor na temu

[es] :: Firebird/Interbase :: Kako FB user koji nije SYSDBA da izvrši proceduru koja poziva sistemsku tabelu

[ Pregleda: 2346 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.