ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 拥有GRANT ANY OBJECT PRIVILEGE权限时的权限回收

拥有GRANT ANY OBJECT PRIVILEGE权限时的权限回收

原创 Linux操作系统 作者:yangtingkun 时间:2010-09-29 23:39:33 0 删除 编辑

前一篇介绍了用户只能回收自己授权的权限,这篇继续讨论拥有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博客 ” ,链接:https://blog.itpub.net/4227/viewspace-675132/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 对象权限的回收
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11077165