Oracle 디렉토리에 대한 사용 권한을 쿼리하는 방법은 무엇입니까?
all_directorys에 디렉토리가 있지만 디렉토리와 관련된 권한, 즉 해당 디렉토리에 부여된 권한을 확인해야 합니다.
이렇게 하면 디렉토리에 부여된 역할, 사용자 및 권한이 제공됩니다.
SELECT *
FROM all_tab_privs
WHERE table_name = 'your_directory'; --> needs to be upper case
그리고 네, 그것은 모두에 있습니다.TAB_privs view ;-) 이 뷰에는 PL/SQL 개체와 해당 실행 권한도 포함되므로 "ALL_OBJECT_PRIBS"와 같은 이름이 더 좋습니다.
다음을 사용하여 모든 디렉터리에 대한 모든 권한을 볼 수 있습니다.
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);
Oracle 11g R2(최소 11.2.02)를 사용하는 경우 datapump_dir_objs라는 이름의 보기가 있습니다.
SELECT * FROM datapump_dir_objs;
보기는 다음을 표시합니다.NAME
디렉터리 개체의PATH
게다가READ
그리고.WRITE
현재 연결된 사용자에 대한 사용 권한.그러나 현재 사용자가 읽거나 쓸 수 있는 권한이 없는 디렉터리 개체는 표시되지 않습니다.
디렉토리를 사용하여 읽고 쓸 수 있는 Oracle 사용자를 의미하는지 아니면 Oracle Directory Object와 기본 운영 체제 디렉토리 간의 권한 상관 관계를 의미하는지 잘 모르겠습니다.
DCookie가 Oracle 측면을 다루었기 때문에 다음은 여기에 있는 Oracle 설명서에서 발췌한 것입니다.
디렉토리에 부여된 권한은 운영 체제 디렉토리에 대해 정의된 권한과 독립적으로 생성되며, 두 권한이 정확히 일치하거나 일치하지 않을 수 있습니다.예를 들어 샘플 사용자 hr에게 디렉토리 개체에 대한 읽기 권한이 부여되었지만 해당 운영 체제 디렉토리에 Oracle Database 프로세스에 대해 정의된 읽기 권한이 없는 경우 오류가 발생합니다.
이 스크립트를 조금 확장하면 all_tab_privs에 나타나는 모든 개체 유형 및 이름에 대한 권한을 볼 수 있습니다.
/*
usage: @obj-privs <object-type> <object-name>
object-type can be any type of object; table, directory, index, etc.
case does not matter
object-name can be any legal name - case matters
Wild cards work for both object-type and object-name
@obj-privs dir% MYDIR
@obj-privs table INV%
@obj-privs synonym %
*/
set pagesize 100
set linesize 200 trimspool off
col grantor format a15
col grantee format a30
col table_schema format a30 head 'OWNER'
col table_name format a30 head 'OBJECT_NAME'
col privilege format a15
col v_object_name new_value v_object_name noprint
col v_object_type new_value v_object_type noprint
set feed off term off echo off pause off verify off
select upper('&1') v_object_type from dual;
select '&2' v_object_name from dual;
set feed on term on feed on
select
p.table_name
, p.table_schema
, p.privilege
, p.grantee
, p.grantor
, o.object_type
from all_tab_privs p
join all_objects o on o.owner = p.table_schema
and o.object_name = p.table_name
and p.table_name like '&v_object_name'
and o.object_type like '&v_object_type'
order by p.table_name, p.table_schema, p.grantee
/
다음은 디렉터리의 예입니다.
SQL# @obj-privs dir% %
OBJECT_NAME OWNER PRIVILEGE GRANTEE GRANTOR OBJECT_TYPE
------------------------------ ------------------------------ --------------- ------------------------------ --------------- ---------------------------------------------------------------------
DATA_PUMP_DIR SYS WRITE EXP_FULL_DATABASE SYS DIRECTORY
DATA_PUMP_DIR SYS READ EXP_FULL_DATABASE SYS DIRECTORY
DATA_PUMP_DIR SYS WRITE IMP_FULL_DATABASE SYS DIRECTORY
DATA_PUMP_DIR SYS READ IMP_FULL_DATABASE SYS DIRECTORY
ORACLE_OCM_CONFIG_DIR SYS READ ORACLE_OCM SYS DIRECTORY
ORACLE_OCM_CONFIG_DIR SYS WRITE ORACLE_OCM SYS DIRECTORY
ORACLE_OCM_CONFIG_DIR2 SYS WRITE ORACLE_OCM SYS DIRECTORY
ORACLE_OCM_CONFIG_DIR2 SYS READ ORACLE_OCM SYS DIRECTORY
8 rows selected.
다음은 이름에 USER가 있는 테이블에 대한 또 다른 예입니다.
SQL# @obj-privs tab% %USER%
OBJECT_NAME OWNER PRIVILEGE GRANTEE GRANTOR OBJECT_TYPE
------------------------------ ------------------------------ --------------- ------------------------------ --------------- ---------------------------------------------------------------------
BDSQL_USER_MAP SYS INSERT BDSQL_ADMIN SYS TABLE
BDSQL_USER_MAP SYS DELETE BDSQL_ADMIN SYS TABLE
BDSQL_USER_MAP SYS SELECT BDSQL_ADMIN SYS TABLE
BDSQL_USER_MAP SYS READ BDSQL_USER SYS TABLE
KU$_USER_MAPPING_VIEW_TBL SYS SELECT SELECT_CATALOG_ROLE SYS TABLE
SDO_PREFERRED_OPS_USER MDSYS UPDATE PUBLIC MDSYS TABLE
SDO_PREFERRED_OPS_USER MDSYS INSERT PUBLIC MDSYS TABLE
SDO_PREFERRED_OPS_USER MDSYS SELECT PUBLIC MDSYS TABLE
SDO_PREFERRED_OPS_USER MDSYS DELETE PUBLIC MDSYS TABLE
USER_PRIVILEGE_MAP SYS READ PUBLIC SYS TABLE
10 rows selected.
언급URL : https://stackoverflow.com/questions/6390388/how-to-query-the-permissions-on-an-oracle-directory
'programing' 카테고리의 다른 글
mongodb 데이터베이스를 첫 번째 시스템을 볼 수 없는 다른 시스템으로 전송하려면 어떻게 해야 합니까? (0) | 2023.06.30 |
---|---|
Git에 여러 파일을 동시에 추가하는 방법 (0) | 2023.06.30 |
mongo.exe가 버전 6.0.0에 설치되지 않음 (0) | 2023.06.30 |
int {DefaultValueBinder} 유형의 값에서 어레이 오프셋에 액세스하려고 합니다.php line 82 } (0) | 2023.06.30 |
사용하지 않는 봄 콩 검출 (0) | 2023.06.25 |