擁有GRANT ANY OBJECT PRIVILEGE許可權時的許可權回收
前一篇介紹了使用者只能回收自己授權的許可權,這篇繼續討論擁有GRANT ANY OBJECT PRIVILEGE許可權時的回收許可權。
授權物件許可權後的授權者顯示問題:http://yangtingkun.itpub.net/post/468/506156
物件許可權的回收:http://yangtingkun.itpub.net/post/468/506207
這裡繼續使用《授權物件許可權後的授權者顯示問題》中的例子,來演示擁有GRANT ANY OBJECT PRIVILEGE許可權後物件許可權的回收。
SQL> SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'U_GRANTEE';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
-------------------- ---------- ---------- -------------------- ---------- --- ---
U_GRANTEE YANGTK T U_WITH_GRANT_AND_ANY DELETE NO NO
U_GRANTEE YANGTK T U_WITH_GRANT INSERT NO NO
U_GRANTEE YANGTK T YANGTK UPDATE NO NO
U_GRANTEE YANGTK T YANGTK SELECT NO NO
使用者U_GRANTEE的SELECT許可權是表的擁有者YANGTK授權的;INSERT許可權是擁有WITH GRANT OPTION的U_WITH_GRANT使用者授權的;UPDATE許可權是擁有GRANT ANY OBJECT PRIVILEGE許可權的U_GRANT_ANY使用者授權的,這時GRANTOR顯示的仍然是表的OWNER;最後DELETE許可權是擁有WITH GRANT OPTION和GRANT ANY OBJECT PRIVILEGE許可權的U_WITH_GRANT_AND_ANY使用者授權的。
在上一篇許可權的回收提到了一個使用者可以被多個使用者授予相同的許可權,從而在資料字典中可以查詢到多條記錄。那麼擁有GRANT ANY OBJECT PRIVILEGE許可權的使用者是如何回收授權的:
SQL> CONN U_GRANT_ANY/PASSWORD
已連線。
SQL> REVOKE UPDATE ON YANGTK.T FROM U_GRANTEE;
撤銷成功。
SQL> REVOKE SELECT ON YANGTK.T FROM U_GRANTEE;
撤銷成功。
SQL> CONN YANGTK/YANGTK
已連線。
SQL> SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'U_GRANTEE';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
-------------------- ---------- ---------- -------------------- ---------- --- ---
U_GRANTEE YANGTK T U_WITH_GRANT_AND_ANY DELETE NO NO
U_GRANTEE YANGTK T U_WITH_GRANT INSERT NO NO
由於擁有GRANT ANY OBJECT PRIVILEGE系統許可權的使用者授權後,顯示的GRANTOR為物件的OWNER,因此這種使用者可以回收GRANTOR為OWNER的授權,即使這個授權並非是當前使用者授權的。
這種情況其實比較簡單,對於同時擁有GRANT ANY OBJECT PRIVILEGE和WITH GRANT OPTION許可權的使用者而言,回收物件許可權更復雜一些:
SQL> GRANT DELETE ON T TO U_GRANTEE;
授權成功。
SQL> SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'U_GRANTEE';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
-------------------- ---------- ---------- -------------------- ---------- --- ---
U_GRANTEE YANGTK T U_WITH_GRANT_AND_ANY DELETE NO NO
U_GRANTEE YANGTK T U_WITH_GRANT INSERT NO NO
U_GRANTEE YANGTK T YANGTK DELETE NO NO
SQL> CONN U_WITH_GRANT_AND_ANY/PASSWORD
已連線。
SQL> REVOKE DELETE ON YANGTK.T FROM U_GRANTEE;
撤銷成功。
SQL> CONN YANGTK/YANGTK
已連線。
SQL> SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'U_GRANTEE';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
-------------------- ---------- ---------- -------------------- ---------- --- ---
U_GRANTEE YANGTK T U_WITH_GRANT INSERT NO NO
U_GRANTEE YANGTK T YANGTK DELETE NO NO
SQL> CONN U_WITH_GRANT_AND_ANY/PASSWORD
已連線。
SQL> REVOKE DELETE ON YANGTK.T FROM U_GRANTEE;
撤銷成功。
SQL> CONN YANGTK/YANGTK
已連線。
SQL> SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'U_GRANTEE';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
-------------------- ---------- ---------- -------------------- ---------- --- ---
U_GRANTEE YANGTK T U_WITH_GRANT INSERT NO NO
這種使用者回收物件許可權時,會先回收GRANTOR為當前使用者的許可權,如果再次執行回收操作或者GRANTOR為當前使用者的授權不存在時,會回收GRANTOR為OWNER的許可權。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-675132/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Laravel 日誌有時候有許可權有時候沒有許可權?Laravel
- 基本Linux許可權提升(Basic Linux Privilege Escalation)Linux
- 許可權之選單許可權
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- mysql 給了使用者所有許可權ALL PRIVILEGES,但是該使用者沒有grant許可權MySql
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- unlimited tablespace許可權的授予和回收MIT
- 許可權系統:一文搞懂功能許可權、資料許可權
- Linux的檔案存取許可權和0644許可權Linux
- Linux特殊許可權之suid、sgid、sbit許可權LinuxUI
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- Linux許可權Linux
- 許可權控制
- mysql許可權MySql
- 有贊許可權系統
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- 阿里雲RDS的高許可權不是真正的高許可權阿里
- 選單許可權和按鈕許可權設定
- android動態許可權到自定義許可權框架Android框架
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- mongoDB安裝時提示沒有許可權MongoDB
- 如何在儲存過程中擁有role的許可權儲存過程
- 許可權系統:許可權應用服務設計
- 詳解GuassDB資料庫許可權命令:GRANT和REVOKE資料庫
- Linux的許可權控制Linux
- Android 通知許可權Android
- Android SELinux許可權AndroidLinux
- 4、許可權管理
- sql許可權管理SQL
- RBAC許可權管理
- 許可權管控
- MySQL許可權管理MySql
- Linux 特殊許可權Linux
- odoo 許可權分配Odoo
- 許可權管理策略
- Shiro許可權框架框架
- 許可權模型:ACL模型
- 許可權設計
- PostgreSQL:許可權管理SQL