【DIRECTORY】普通使用者建立Oracle DIRECTORY資料庫物件的許可權需求及探索
本文以普通使用者建立Oracle DIRECTORY資料庫物件所需的許可權入手,給大家展示一下自我提示的方法,進而探索一下DIRECTORY資料庫物件的“小秘密”。
1.授予普通使用者建立DIRECTORY的許可權
為保證普通使用者具有建立Oracle資料庫的directory物件,需要確切知道需要授予使用者的許可權是什麼,我們這裡需要的許可權是“CREATE ANY DIRECTORY”許可權。
如果一時忘記需要的具體許可權,可以使用如下參考類SQL語句獲得提示。
sys@ora10g> select distinct privilege from dba_sys_privs where privilege like '%DIRECTORY%';
PRIVILEGE
----------------------------------------
DROP ANY DIRECTORY
CREATE ANY DIRECTORY
對普通使用者sec使用者的授權語句如下。
sys@ora10g> grant CREATE ANY DIRECTORY to sec;
Grant succeeded.
2.嘗試在普通使用者下建立DIRECTORY資料庫物件
sec@ora10g> create directory dir_test as '/home/oracle/secooler';
Directory created.
OK,此時在sec使用者下建立DIRECTORY物件成功!
3.建立DIRECTORY可能遇到的報錯資訊
如若在建立DIRECTORY之前普通使用者sec未獲得相應許可權,將會收到最為常見的“ORA-01031: insufficient privileges”錯誤。
模擬再現一下,供大家參考。
sec@ora10g> conn / as sysdba
Connected.
sys@ora10g> revoke CREATE ANY DIRECTORY from sec;
Revoke succeeded.
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> create directory dir_test as '/home/oracle/secooler';
create directory dir_test as '/home/oracle/secooler'
*
ERROR at line 1:
ORA-01031: insufficient privileges
4.獲得DIRECTORY建立結果資訊
用於查詢獲得DIRECTORY資訊的資料庫檢視“僅有”兩個,如下所示。
sys@ora10g> select TABLE_NAME from dict where table_name like '%DIRECTORIES';
TABLE_NAME
------------------------------
ALL_DIRECTORIES
DBA_DIRECTORIES
這裡之所以強調“僅有”,是與其他資料庫物件檢視相比較而言的。
例如,用於獲得同名的資料庫檢視一般都會有三類,如下所示。
sys@ora10g> select TABLE_NAME from dict where table_name like '%SYNONYMS';
TABLE_NAME
------------------------------
DBA_SYNONYMS
USER_SYNONYMS
ALL_SYNONYMS
用於檢視DIRECTORY資料庫物件的檢視之所以沒有以USER開頭的是有其具體緣由的。
請繼續跟隨我進行探索。
我們使用ALL_DIRECTORIES檢視檢視剛剛建立成功的DIRECTORY物件。
sec@ora10g> col owner for a6
sec@ora10g> col DIRECTORY_NAME for a15
sec@ora10g> col DIRECTORY_PATH for a30
sec@ora10g> select * from all_directories where DIRECTORY_NAME = 'DIR_TEST';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------ --------------- ------------------------------
SYS DIR_TEST /home/oracle/secooler
重點關注一下OWNER欄位的返回結果,這裡顯示的內容是“SYS”,並不是我們所期待的那個建立DIRECTORY的當前使用者“SEC”!
這樣便可以順理成章的給出不存在以USER開頭的“USER_DIRECTORIES”檢視的合理解釋,因為DIRECTORY資料庫物件並不屬於某個具體使用者,都歸SYS使用者所有!
5.小結
在對Oracle資料庫世界的探索過程中,不要放過任何蛛絲馬跡,每一個細節問題都充滿了樂趣,值得思考和總結。
在踐行的征程中我們追求的是一種甚解的態度!
Good luck.
secooler
11.03.27
-- The End --
1.授予普通使用者建立DIRECTORY的許可權
為保證普通使用者具有建立Oracle資料庫的directory物件,需要確切知道需要授予使用者的許可權是什麼,我們這裡需要的許可權是“CREATE ANY DIRECTORY”許可權。
如果一時忘記需要的具體許可權,可以使用如下參考類SQL語句獲得提示。
sys@ora10g> select distinct privilege from dba_sys_privs where privilege like '%DIRECTORY%';
PRIVILEGE
----------------------------------------
DROP ANY DIRECTORY
CREATE ANY DIRECTORY
對普通使用者sec使用者的授權語句如下。
sys@ora10g> grant CREATE ANY DIRECTORY to sec;
Grant succeeded.
2.嘗試在普通使用者下建立DIRECTORY資料庫物件
sec@ora10g> create directory dir_test as '/home/oracle/secooler';
Directory created.
OK,此時在sec使用者下建立DIRECTORY物件成功!
3.建立DIRECTORY可能遇到的報錯資訊
如若在建立DIRECTORY之前普通使用者sec未獲得相應許可權,將會收到最為常見的“ORA-01031: insufficient privileges”錯誤。
模擬再現一下,供大家參考。
sec@ora10g> conn / as sysdba
Connected.
sys@ora10g> revoke CREATE ANY DIRECTORY from sec;
Revoke succeeded.
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> create directory dir_test as '/home/oracle/secooler';
create directory dir_test as '/home/oracle/secooler'
*
ERROR at line 1:
ORA-01031: insufficient privileges
4.獲得DIRECTORY建立結果資訊
用於查詢獲得DIRECTORY資訊的資料庫檢視“僅有”兩個,如下所示。
sys@ora10g> select TABLE_NAME from dict where table_name like '%DIRECTORIES';
TABLE_NAME
------------------------------
ALL_DIRECTORIES
DBA_DIRECTORIES
這裡之所以強調“僅有”,是與其他資料庫物件檢視相比較而言的。
例如,用於獲得同名的資料庫檢視一般都會有三類,如下所示。
sys@ora10g> select TABLE_NAME from dict where table_name like '%SYNONYMS';
TABLE_NAME
------------------------------
DBA_SYNONYMS
USER_SYNONYMS
ALL_SYNONYMS
用於檢視DIRECTORY資料庫物件的檢視之所以沒有以USER開頭的是有其具體緣由的。
請繼續跟隨我進行探索。
我們使用ALL_DIRECTORIES檢視檢視剛剛建立成功的DIRECTORY物件。
sec@ora10g> col owner for a6
sec@ora10g> col DIRECTORY_NAME for a15
sec@ora10g> col DIRECTORY_PATH for a30
sec@ora10g> select * from all_directories where DIRECTORY_NAME = 'DIR_TEST';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------ --------------- ------------------------------
SYS DIR_TEST /home/oracle/secooler
重點關注一下OWNER欄位的返回結果,這裡顯示的內容是“SYS”,並不是我們所期待的那個建立DIRECTORY的當前使用者“SEC”!
這樣便可以順理成章的給出不存在以USER開頭的“USER_DIRECTORIES”檢視的合理解釋,因為DIRECTORY資料庫物件並不屬於某個具體使用者,都歸SYS使用者所有!
5.小結
在對Oracle資料庫世界的探索過程中,不要放過任何蛛絲馬跡,每一個細節問題都充滿了樂趣,值得思考和總結。
在踐行的征程中我們追求的是一種甚解的態度!
Good luck.
secooler
11.03.27
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29674916/viewspace-2126569/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 無許可權建立資料夾( 報錯:Unable to create ... directory.)Linux
- oracle 10g 10.2.0.5 資料庫重新啟動後,DIRECTORY 許可權失效Oracle 10g資料庫
- oracle資料庫使用者建立、許可權分配Oracle資料庫
- Oracle建立表空間、建立資料庫使用者、賦許可權Oracle資料庫
- Oracle資料庫的系統和物件許可權Oracle資料庫物件
- Oracle資料庫scott使用者建立view檢視許可權Oracle資料庫View
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- Oracle 9i資料庫的使用者建立以及許可權分配Oracle資料庫
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- Oracle資料庫使用者許可權控制 - Role - SynonymOracle資料庫
- 提取使用者許可權或是不同資料庫使用者許可權的同步資料庫
- Oracle ASM User Directory and Group DirectoryOracleASM
- Oracle 使用者許可權管理與常用許可權資料字典列表Oracle
- MySQL資料庫許可權體系入門(2)---建立使用者MySql資料庫
- 【USER】Oracle 一個普通使用者有多少許可權Oracle
- PostgreSQL資料庫使用者許可權管理SQL資料庫
- Oracle建立表空間、建立使用者、授權、授權物件的訪問以及檢視許可權集合Oracle物件
- 【Mysql】給普通使用者mysqldump的許可權MySql
- 資料庫的許可權管理資料庫
- MySQL資料庫許可權體系入門(3)---管理使用者許可權MySql資料庫
- 普通使用者許可權執行dockerDocker
- 企業級地理資料庫(3)為不同需求的使用者設定許可權資料庫
- 批量修改資料夾及檔案使用者許可權和使用者組許可權 centosCentOS
- 使用者物件許可權管理物件
- 【區別】“UTL_FILE_DIR引數” VS “DIRECTORY資料庫物件”資料庫物件
- Oracle 資料庫安全許可權配置標準Oracle資料庫
- MySQL資料庫許可權體系入門(5)---管理資料庫許可權MySql資料庫
- create directory in OracleOracle
- 複製建立已有資料庫使用者、表空間、許可權的指令碼資料庫指令碼
- 查詢mysql資料庫中所有使用者及使用者許可權MySql資料庫
- Oracle使用者及角色的許可權管理[Oracle基礎]Oracle
- Oracle資料泵建立使用者避坑(表空間配額、許可權)Oracle
- Oracle 建立表空間、建立使用者以及授權、檢視許可權Oracle
- oracle使用者許可權Oracle
- oracle 使用者許可權Oracle
- 【許可權管理】Oracle中檢視、回收使用者許可權Oracle
- Oracle 11g建立使用者並賦許可權Oracle
- 詳解Oracle建立使用者許可權全過程Oracle