許可權傳遞的一點測試!
記得在北京講課時曾經有學員問到過這個問題,當時沒有詳細測試,前幾天看到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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 滲透測試-許可權維持
- 許可權系統:一文搞懂功能許可權、資料許可權
- 許可權之選單許可權
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- Linux的檔案存取許可權和0644許可權Linux
- 一對一原始碼,前端頁面許可權和按鈕許可權控制原始碼前端
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- 阿里雲RDS的高許可權不是真正的高許可權阿里
- 【專案實踐】一文帶你搞定頁面許可權、按鈕許可權以及資料許可權
- Linux特殊許可權之suid、sgid、sbit許可權LinuxUI
- 測試平臺-flask_admin+mongoEngine 實現資料許可權FlaskGo
- Linux的許可權控制Linux
- Linux許可權Linux
- 許可權控制
- mysql許可權MySql
- 上傳APP到Google Play許可權問題APPGo
- SharePoint Online 站點模板中許可權的設定
- 選單許可權和按鈕許可權設定
- android動態許可權到自定義許可權框架Android框架
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- 傳奇GM許可權命令設定教程,傳奇分享匯
- 許可權系統:許可權應用服務設計
- SpringSecurity許可權管理系統實戰—九、資料許可權的配置SpringGse
- 許可權概念、許可權提升概念以及許可權提升的分類和目的 Windows 提權的基礎原理是瞭解作業系統的安全機制和許可權管理 Windows提權攻擊的進一步知識概念Windows作業系統
- 如何上傳雲伺服器檔案許可權伺服器
- mongodb 的許可權系統MongoDB
- Linux 下許可權的管理Linux
- Linux 中的許可權管理Linux
- fastadmin的許可權管理authAST
- 一個好的代理IP有哪些許可權?
- Shiro許可權管理框架(一):Shiro的基本使用框架
- SpringBoot(一) 如何實現AOP的許可權控制Spring Boot
- 記一次 Laravel日誌許可權許可權問題(定時器導致)Laravel定時器
- Android 通知許可權Android
- Android SELinux許可權AndroidLinux
- 4、許可權管理
- sql許可權管理SQL