Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251002
  • 博文数量: 59
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 698
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-19 21:17
文章分类

全部博文(59)

文章存档

2009年(14)

2008年(45)

我的朋友

分类: Oracle

2008-10-27 00:34:59

对象权限与系统权限的级联回收的异同

sqlplus / as sysdba
SQL> create user boss identified by boss;
用户已创建
SQL> create user manager identified by manager;
用户已创建
SQL> create user clerk identified by clerk;
用户已创建
SQL> grant create session to boss with admin option;
授权成功。
SQL> conn boss/boss
已连接。
SQL> grant create session to manager with admin option;
授权成功。
SQL> conn manager/manager
已连接。
SQL> grant create session to clerk;
授权成功。
---测试越级别回收
SQL> conn boss/boss
已连接。
SQL> revoke create session from clerk;
撤销成功。
SQL> conn clerk/clerk
ERROR:
ORA-01045: user CLERK lacks CREATE SESSION privilege; logon denied
警告: 您不再连接到 ORACLE。
越级回收权限成功。
***********************************************************************
---测试级联回收权限
SQL> conn manager/manager
已连接。
SQL> grant create session to clerk;
授权成功。
SQL> conn boss/boss
已连接。
SQL> revoke create session from manager;
撤销成功。
SQL> conn clerk/clerk
已连接。
系统权限不级联回收权限
*********************************************************************
conn / as sysdba
create table test(id number);
insert into test values(10);
commit;
grant select on sys.test to boss with grant option;
conn boss/boss
grant select on sys.test to manager with grant option;
conn manager/manager
grant select on sys.test to clerk with grant option;
---测试越级回收
SQL> conn boss/boss
已连接。
SQL> revoke select on sys.test from clerk;
revoke select on sys.test from clerk
*
ERROR 位于第 1 行:
ORA-01927: 无法 REVOKE 您未授权的权限
对象权限不能越级回收,谁授予谁撤销
**************************************************************************
--对象权限的级联撤销
SQL> conn manager/manager
已连接。
SQL> select * from sys.test;
        ID
----------
        10
        10
SQL> conn clerk/clerk
已连接。
SQL> select * from sys.test;
        ID
----------
        10
        10
SQL> conn boss/boss
已连接。
SQL> revoke select on sys.test from manager;
撤销成功。
SQL> conn manager/manager
已连接。
SQL> select * from sys.test;
select * from sys.test
                  *
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在

SQL> conn clerk/clerk
已连接。
SQL> select * from sys.test;
select * from sys.test
                  *
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
对象权限是级联删除的。
*******************************************************************
dba_tab_privs该DBA视图包含了数据库中所有用户或角色的对象权限。
如果一个用户对一个对象赋权了,那么在系统表dba_tabs_privs可以查看
比如sys下boss赋予了sys模式下test表的读权限
Select * From Dba_Tab_Privs Where owner = 'SYS' And table_name= 'TEST'
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
---------------------------------------------------------------------------------
BOSS SYS TEST           SYS SELECT             YES            NO
其中WITH HIERARCHY OPTION含义如下。
Specify WITH HIERARCHY OPTION to grant the specified object privilege on all
subobjects of object, including subobjects created subsequent to this statement
(such as subviews created under a viewcre
*********************************************************************
我们在做一个测试
manager对sys.test表的查询权限,一个是由boss赋予
同时sys用户也对manager用户授予该权限,那么他们回收权限时相互不干扰。
 
而系统权限是如果回收后,该种系统权限就消失。
 
总结:
    系统权限可以越级回收,但是不级联回收,但是如果多个用户授予某一用户同样权限,如果其中某一个用户回收了该权限,则该用户不在有该系统权限。
    对象权限不能越级回收,谁授予谁撤销。对象权限级联回收。如果多个用户授予同一用户同样权限,他们对该用户对象权限的回收互不干扰。
    系统权限是一类操作,而对象权限是某一个具体的操作。
 
阅读(1714) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~