it-swarm.com.de

Wie kann ich die Berechtigungen für ein Oracle-Verzeichnis abfragen?

Ich habe ein Verzeichnis in all_directories, aber ich muss herausfinden, welche Berechtigungen damit verbunden sind, d. H. Welche Berechtigungen wurden dafür vergeben?

12
Cade Roux

Dies sollte Ihnen die Rollen, Benutzer und Berechtigungen geben, die für ein Verzeichnis erteilt wurden:

SELECT * 
  FROM all_tab_privs 
 WHERE table_name = 'your_directory';  --> needs to be upper case

Und ja, es IS in der Ansicht all_TAB_privs ;-) Ein besserer Name für diese Ansicht wäre etwa "ALL_OBJECT_PRIVS", da sie auch PL/SQL-Objekte und deren Ausführungsberechtigungen enthält.

27
DCookie

Sie können alle Privilegien für alle Verzeichnisse sehen

SELECT *
from all_tab_privs
where table_name in
  (select directory_name 
   from dba_directories);

Im Folgenden erhalten Sie die SQL-Anweisungen, um die Berechtigungen zu erteilen, falls Sie eine Sicherungskopie Ihrer oder etwas anderes erstellen möchten 

select 'Grant '||privilege||' on directory '||table_schema||'.'||table_name||' to '||grantee 
from all_tab_privs 
where table_name in (select directory_name from dba_directories);
7
Alex Porteous

Ich war nicht sicher, ob Sie meinen, welche Oracle-Benutzer mit dem Verzeichnis oder der Korrelation der Berechtigungen zwischen Oracle Directory Object und dem zugrunde liegenden Betriebssystemverzeichnis lesen können. 

Da DCookie die Oracle-Seite des Zauns abgedeckt hat, wird Folgendes aus der Oracle-Dokumentation here entnommen.

Privilegien für das Verzeichnis werden unabhängig von der .__ erstellt. Berechtigungen, die für den Betrieb definiert sind Systemverzeichnis, und die beiden können oder stimmt möglicherweise nicht genau überein. Zum Beispiel: Ein Fehler tritt auf, wenn Beispiel Benutzer hr erhält das READ-Privileg für das Verzeichnisobjekt aber das entsprechendes Betriebssystem Das Verzeichnis hat nicht READ Berechtigung definiert für Oracle Database Prozesse.

2
Ian Carpenter

Bei Oracle 11g R2 (zumindest bei 11.2.02) gibt es eine Ansicht mit dem Namen datapump_dir_objs.

SELECT * FROM datapump_dir_objs;

Die Ansicht zeigt die NAME des Verzeichnisobjekts, die PATH sowie die Berechtigungen READ und WRITE für den aktuell verbundenen Benutzer. Es werden jedoch keine Verzeichnisobjekte angezeigt, für die der aktuelle Benutzer keine Berechtigung zum Lesen oder Schreiben hat.

0
Tezro