web-dev-qa-db-fra.com

Comment interroger les autorisations sur un répertoire Oracle?

J'ai un répertoire dans all_directories, mais je dois savoir quelles autorisations lui sont associées, c'est-à-dire quelles autorisations ont été accordées.

12
Cade Roux

Cela devrait vous donner les rôles, les utilisateurs et les autorisations accordées sur un répertoire:

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

Et oui, il IS dans la vue all_TAB_privs ;-) Un meilleur nom pour cette vue serait quelque chose comme "ALL_OBJECT_PRIVS", car il inclut également les objets PL/SQL et leurs autorisations d'exécution.

27
DCookie

Vous pouvez voir tous les privilèges pour tous les répertoires avec ce qui suit

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

Ce qui suit vous donne les instructions SQL pour accorder les privilèges si vous devez sauvegarder ce que vous avez fait 

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

Vous ne saviez pas trop si vous vouliez savoir quels utilisateurs Oracle peuvent lire/écrire avec le répertoire ou la corrélation des autorisations entre Oracle Directory Object et le répertoire du système d'exploitation sous-jacent. 

Comme DCookie a couvert le côté Oracle de la clôture, les informations suivantes sont extraites de la documentation Oracle trouvée ici .

Privilèges accordés pour le répertoire sont créés indépendamment du autorisations définies pour le fonctionnement répertoire système, et les deux peuvent ou peut ne pas correspondre exactement. Pour Par exemple, une erreur se produit si sample le privilège READ est accordé à l'utilisateur hr sur l'objet d'annuaire mais le système d'exploitation correspondant Le répertoire n’a pas READ autorisation définie pour Oracle Database processus.

2
Ian Carpenter

Avec Oracle 11g R2 (au moins avec 11.2.02), il existe une vue nommée datapump_dir_objs.

SELECT * FROM datapump_dir_objs;

La vue affiche la NAME de l'objet d'annuaire, les autorisations PATH ainsi que READ et WRITE pour l'utilisateur actuellement connecté. Cependant, il ne montre aucun objet de répertoire pour lequel l'utilisateur actuel n'a pas l'autorisation de lire ou d'écrire.

0
Tezro