許可權傳遞的一點測試!
記得在北京講課時曾經有學員問到過這個問題,當時沒有詳細測試,前幾天看到pub上又有人提及這類問題,簡單的測試了一下,還發現了一些問題。傳遞出去的物件許可權可以cascade回收,而傳遞出去的系統許可權卻沒有cascade回收!
[@more@]1.物件許可權傳遞測試
C:>sqlplus xys/manager
SQL*Plus: Release 11.1.0.6.0 - Production on 星期一 4月 7 22:55:01 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from tt;
ID NAME
---------- ----------
1 a
2 a
3 "abc"
4 abcd
SQL> grant select on tt to scott with grant option;
grant select on tt to scott with grant option
*
第 1 行出現錯誤:
ORA-01917: 使用者或角色 'SCOTT' 不存在
SQL> @ C:appwchproduct11.1.0db_1RDBMSADMINscott
SQL> connect xys/manager
已連線。
SQL> grant select on tt to scott with grant option;
授權成功。
SQL> connect scott/tiger
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
警告: 您不再連線到 ORACLE。
--這裡注意在11g中口令區分大小寫
SQL> connect scott/TIGER
已連線。
SQL> grant select on xys.tt to test;
授權成功。
SQL> desc dba_tab_privs
ERROR:
ORA-04043: 物件 "SYS"."DBA_TAB_PRIVS" 不存在
SQL> show user
USER 為 "SCOTT"
SQL> connect xys/manager
已連線。
SQL> select * from dba_tab_privs where TABLE_NAME='TT';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
---------- ---------- ---------- ---------- ---------- --- ---
SCOTT XYS TT XYS SELECT YES NO
TEST XYS TT SCOTT SELECT NO NO
SQL> connect scott/TIGER
已連線。
--scott可以單獨從test中撤銷他授予test的關於xys.tt的select許可權!
SQL> revoke select on xys.tt from test;
撤銷成功。
SQL> connect xys/manager
已連線。
SQL> select * from dba_tab_privs where TABLE_NAME='TT';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
---------- ---------- ---------- ---------- ---------- --- ---
SCOTT XYS TT XYS SELECT YES NO
SQL> connect scott/TIGER
已連線。
SQL> grant select on xys.tt to test;
授權成功。
--在11g中使用者名稱依然不區分大小寫
SQL> CONNECT XYS/MANAGER
ERROR:
ORA-01017: 使用者名稱/口令無效; 登入被拒絕
警告: 您不再連線到 ORACLE。
SQL> CONNECT XYS/manager
已連線。
SQL> select * from dba_tab_privs where TABLE_NAME='TT';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
---------- ---------- ---------- ---------- ---------- --- ---
SCOTT XYS TT XYS SELECT YES NO
TEST XYS TT SCOTT SELECT NO NO
--注意這裡當xys從scott收回了tt表的select許可權時,scott自動也收回了他授予test的關於xys.tt表的
select許可權;也就是說物件許可權進行了cascade撤銷!
SQL> revoke select on tt from scott;
撤銷成功。
SQL> select * from dba_tab_privs where TABLE_NAME='TT';
未選定行
2.系統許可權傳遞測試
SQL> SHOW USER
USER 為 "XYS"
SQL> grant create session to scott with admin option;
授權成功。
SQL> connect scott/TIGER
已連線。
SQL> grant create session to test;
授權成功。
SQL> connect xys/manager
已連線。
SQL> select * from dba_sys_privs where grantee in ('SCOTT','TEST')
2 and privilege='CREATE SESSION';
GRANTEE PRIVILEGE ADMIN_OPTION
---------- -------------------- --------------------
SCOTT CREATE SESSION YES
TEST CREATE SESSION NO
SQL> show user
USER 為 "XYS"
SQL> connec scott/TIGER
已連線。
SQL> revoke create session from test;
撤銷成功。
SQL> connect xys/manager
已連線。
SQL> select * from dba_sys_privs where grantee in ('SCOTT','TEST')
2 and privilege='CREATE SESSION';
GRANTEE PRIVILEGE ADMIN_OPTION
---------- -------------------- --------------------
SCOTT CREATE SESSION YES
SQL> connec scott/TIGER
已連線。
SQL> grant create session to test;
授權成功。
SQL> connect xys/manager
已連線。
SQL> select * from dba_sys_privs where grantee in ('SCOTT','TEST')
2 and privilege='CREATE SESSION';
GRANTEE PRIVILEGE ADMIN_OPTION
---------- -------------------- --------------------
SCOTT CREATE SESSION YES
TEST CREATE SESSION NO
SQL> revoke create session from scott;
撤銷成功。
--這裡注意當xys從scott中收回了create session系統許可權時,scott授予test的create session並沒有
從test中被一併收回!這是系統許可權傳遞和物件許可權傳遞的區別!
SQL> select * from dba_sys_privs where grantee in ('SCOTT','TEST')
2 and privilege='CREATE SESSION';
GRANTEE PRIVILEGE ADMIN_OPTION
---------- -------------------- --------------------
TEST CREATE SESSION NO
--這裡當我們試圖讓scott從test中收回create session許可權時卻以外的得到了錯誤"ORA-01031: 許可權不
足",這也確實不難理解,因為此時scott確實沒有create session的許可權,因此他也沒有收回create
session的許可權或者說能力,總覺的這裡scott有點尷尬,與其說scott尷尬,不如說oracle尷尬;這樣設
計是否合理,還是大家來評說吧。
SQL> connect scott/TIGER
已連線。
SQL> revoke create session from test;
revoke create session from test
*
第 1 行出現錯誤:
ORA-01031: 許可權不足
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1002003/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 系統許可權傳遞和物件許可權傳遞的測試物件
- 列許可權的一點總結!
- linux許可權管理一點理解Linux
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- Oracle許可權(一)Oracle
- ftp上傳的檔案指定許可權FTP
- AIX 的許可許可權(轉)AI
- 【Privilege】Oracle物件許可權級聯收回現象測試Oracle物件
- 許可權之選單許可權
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- 使用者許可權繼承另一使用者的許可權繼承
- sysauth$基表的使用者許可權的一點分析
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- 一對一原始碼,前端頁面許可權和按鈕許可權控制原始碼前端
- Linux-許可權管理(ACL許可權)Linux
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- 【Privilege】Oracle系統許可權非級聯收回現象測試Oracle
- 如何檢測應用通知許可權?如何跳轉通知許可權設定頁?
- sql server點檢賬號需要的許可權SQLServer
- 【專案實踐】一文帶你搞定頁面許可權、按鈕許可權以及資料許可權
- 關於Linux許可權設定的一點小總結Linux
- Android系統許可權和root許可權Android
- 阿里雲RDS的高許可權不是真正的高許可權阿里
- Linux的檔案存取許可權和0644許可權Linux
- 擁有GRANT ANY OBJECT PRIVILEGE許可權時的許可權回收Object
- mysql許可權MySql
- MySQL 許可權MySql
- ORACLE許可權Oracle
- 測試平臺-flask_admin+mongoEngine 實現資料許可權FlaskGo
- 物件許可權的回收物件
- 上傳APP到Google Play許可權問題APPGo
- weblogic上傳檔案預設許可權Web
- Linux 許可權管理之目錄許可權限制Linux
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- 【LIUNX】目錄或檔案許可權,許可權授予
- Guest許可權突破——許可權提升方法總結(轉)
- oracle物件與系統許可權小測Oracle物件