web-dev-qa-db-ja.com

Oracleディレクトリの権限を照会する方法は?

All_directoriesにディレクトリがありますが、それに関連付けられているアクセス許可、つまり、どのアクセス許可が付与されているかを調べる必要がありますか?

12
Cade Roux

これにより、ディレクトリに付与されたロール、ユーザー、およびパーミッションが得られます。

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

はい、IS ;-) PL/SQLオブジェクトとその実行権限も含まれるため、そのビューのより良い名前は「ALL_OBJECT_PRIVS」のようなものです。

28
DCookie

以下を使用して、すべてのディレクトリのすべての権限を確認できます。

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

以下は、あなたがしたことや何かをバックアップする必要がある場合に特権を付与するSQL文を提供します

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);
8
Alex Porteous

どのOracleユーザーがディレクトリを使用して読み書きできるのか、またはOracle Directory Objectと基礎となるオペレーティングシステムディレクトリ間の権限の相関関係を意味するのかどうかはわかりませんでした。

DCookieはフェンスのOracle側をカバーしているので、次は here で見つかったOracleドキュメントから取られています。

ディレクトリに付与された権限は、オペレーティングシステムディレクトリに定義された権限とは無関係に作成され、この2つは正確に一致する場合と一致しない場合があります。たとえば、サンプルユーザーhrにディレクトリオブジェクトのREAD権限が付与されているが、対応するオペレーティングシステムディレクトリにOracle DatabaseプロセスのREAD権限が定義されていない場合、エラーが発生します。

2
Ian Carpenter

Oracle 11g R2(少なくとも11.2.02)では、datapump_dir_objsという名前のビューがあります。

SELECT * FROM datapump_dir_objs;

ビューには、ディレクトリオブジェクトのNAMEPATH、および現在接続しているユーザーのREADおよびWRITE権限が表示されます。ただし、現在のユーザーが読み取りまたは書き込みを許可されていないディレクトリオブジェクトは表示されません。

0
Tezro