ITPub博客

【Privilege】Oracle系统权限非级联收回现象测试

原创 Linux操作系统 作者:secooler 时间:2011-10-25 21:42:04 0 删除 编辑
  Oracle权限分为系统权限和对象权限。这里给大家演示一下关于系统权限授予以及回收过程中的一个特殊场景:系统权限非级联收回现象。
  本实验中共涉及到三个用户:SYS用户、secooler1用户和secooler2用户。

1.清理并初始化用户
1)清理测试用户secooler1和secooler2
sys@secdb> drop user secooler1;

User dropped.

sys@secdb> drop user secooler2;

User dropped.

2)创建测试用户secooler1和secooler2
sys@secdb> create user secooler1 identified by secooler1;

User created.

sys@secdb> create user secooler2 identified by secooler2;

User created.

2.对secooler1用户和secooler2用户进行授权
1)SYS用户使用with admin option选项对secooler1用户授予创建会话的系统权限
sys@secdb> grant create session to secooler1 with admin option;

Grant succeeded.

2)连接到secooler1用户将创建会话的权限授予secooler2用户
因为secooler1具有admin权限,因此可以将创建会话的权限再次授予其他用户,这里将创建会话的权限授予secooler2用户。
sys@secdb> conn secooler1/secooler1
Connected.
secooler1@secdb> grant create session to secooler2;

Grant succeeded.

3.查看系统权限授予情况
1)连接到SYS用户
secooler1@secdb> conn / as sysdba
Connected.

2)查看secooler1用户的系统权限
sys@secdb> select * from dba_sys_privs where grantee='SECOOLER1';

GRANTEE              PRIVILEGE                      ADM
-------------------- ------------------------------ ---
SECOOLER1            CREATE SESSION                 YES

secooler1用户具有创建会话的权限,同时具有admin选项。

3)查看secooler2用户的系统权限
sys@secdb> select * from dba_sys_privs where grantee='SECOOLER2';

GRANTEE              PRIVILEGE                      ADM
-------------------- ------------------------------ ---
SECOOLER2            CREATE SESSION                 NO

secooler2用户具有创建会话的权限。

4.使用SYS用户回收secooler1用户的创建会话权限
sys@secdb> revoke create session from secooler1;

Revoke succeeded.

5.确认系统权限回收结果
sys@secdb> select * from dba_sys_privs where grantee='SECOOLER1';

no rows selected

sys@secdb> select * from dba_sys_privs where grantee='SECOOLER2';

GRANTEE              PRIVILEGE                      ADM
-------------------- ------------------------------ ---
SECOOLER2            CREATE SESSION                 NO

可见,secooler1用户的创建会话的权限已经被回收成功,但是注意,这里secooler2用户的创建会话的权限并没有被级联收回。这便是系统权限回收过程中的特点。

6.测试用户权限收回结果
sys@secdb> conn secooler2/secooler2
Connected.
secooler2@secdb> conn secooler1/secooler1
ERROR:
ORA-01045: 用户 SECOOLER1 没有 CREATE SESSION 权限; 登录被拒绝


Warning: You are no longer connected to ORACLE.

可见,此时secooler2用户依然可以连接成功,因为secooler2用户的创建会话的权限没有被级联收回。

7.小结
  Oracle系统权限不具有级联收回的功能。在使用具有admin选项授权时请注意权限收回的全面性。

Good luck.

secooler
11.10.25

-- The End --

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

请登录后发表评论 登录
全部评论
Oracle ACE 总监,OCM联盟(ocmu.org)创始人,恩墨学院(enmoedu.com)创始人,ITPUB Oracle专题深入讨论版版主,资深Oracle数据库专家,北京大学理学硕士,获Oracle OCM 10g 11g认证,ACOUG核心成员,DATAGURU专家团成员,Blogger。Good luck.

注册时间:2008-03-16

  • 博文量
    797
  • 访问量
    7882442