拥有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_GRANTEESELECT权限是表的拥有者YANGTK授权的;INSERT权限是拥有WITH GRANT OPTIONU_WITH_GRANT用户授权的;UPDATE权限是拥有GRANT ANY OBJECT PRIVILEGE权限的U_GRANT_ANY用户授权的,这时GRANTOR显示的仍然是表的OWNER;最后DELETE权限是拥有WITH GRANT OPTIONGRANT 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,因此这种用户可以回收GRANTOROWNER的授权,即使这个授权并非是当前用户授权的。

这种情况其实比较简单,对于同时拥有GRANT ANY OBJECT PRIVILEGEWITH 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为当前用户的授权不存在时,会回收GRANTOROWNER的权限。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-675132/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-675132/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值