oralce数据库授权权限传递详解

以sys用户登陆oracle,执行select * from V_$PWFILE_USERS;可查询到具有sysdba权限的用户。

sys/change_on_install       SYSDBA 或 SYSOPER        不能以 NORMAL 登录,可作为默认的系统管理员

system/manager               SYSDBA 或 NORMAL        可作为默认的系统管理员,不能以 SYSOPER 登录,只能以normal登陆,除非你对它授予了sysdba的系统权限或者sysoper系统权限。

sysman/oem_temp(sysman)             sysman                            为 oms 的用户名

scott/tiger                        NORMAL                            普通用户

aqadm /aqadm                SYSDBA 或 NORMAL        高级队列管理员

Dbsnmp/dbsnmp           SYSDBA 或 NORMAL           复制管理员

select * from user_role_privs;--查询当前用户具有的角色

select * from session_roles; --查询当前用户具有的角色

select * from user_sys_privs; --查询当前用户具有的权限(系统权限,对数据库登录,创建表,使用表空间等权限)

select * from user_tab_privs; --查询当前用户具有的权限(对象权限,对其他用户表或视图等权限)

select * from dba_role_privs t where t.grantee='MER_BAMS';--查询某个用户具有的角色(用户名必须大写,具备dba角色的用户才可以查询,如sys,system用户等)

select * from dba_sys_privs t where  t.grantee in ('MERAMS','RESOURCE');--查询某个用户或者角色具有的权限(系统权限,用户名或者角色名必须大写,具备dba角色的用户才可以查询,如sys,system用户等)

select * from dba_tab_privs t where t.GRANTEE='MER_BAMS';--查询某个用户具有的权限(对象权限,用户名或者角色名必须大写,具备dba角色的用户才可以查询,如sys,system用户等)

select ROLE, PRIVILEGE from role_sys_privs where role='DBA';--查询BDA的权限

 

权限或角色的传递概念(角色也可以传递)

对象权限是:用户对其他用户的数据对象(表,视图,存储过程等)的操作权限
系统权限是:用户对数据库的相关权限,如登录数据库,使用表空间,查询存储过程,创建表,更新表等。

如果是对象权限就在后面加入with grant option;

    例子描述:SYS用户加上with grant option方式赋予A用户查询SCOTT.EMP表的权限,

            以用户SYS用户登录,加上with grant option方式赋予A用户查询SCOTT.EMP表的权限

                SYS用户:grant select on scott.emp to a with grant option;

            用户A用户登录,加上with grant option方式赋予B用户查询SCOTT.EMP表的权限

                A用户: grant select on scott.emp to b with grant option;--如果没有加with grant option,则在用户B处权限停止传递

            用户A登录不可以自己撤销自己对SCOTT.EMP表的查询权限:revoke select on scott.emp from a;--不可以撤销

            如果用户SYS用户撤销A用户查询SCOTT.EMP表的权限:revoke select on scott.emp from a;

            则B用户也没有了查询SCOTT.EMP表的权限,此种方式是级联撤销。

    注意的是:对象权限会级联撤销,但是当前用户不可以撤销自己的权限,查看标识USER_TBA_PRIVS表中GRANTTABLE=YES,则为可传递权限。

如果是系统权限就在后面加入with admin option;

    例子描述:SYS用户加上with admin option方式赋予A用户CONNECT权限(其实是CONNECT角色,即CREATE SESSION权限,表示登录数据库权限),

            用户SYS用户登录,加上with admin option方式赋予A用户CONNECT权限

                SYS用户:grant connect to a with admin option;

            用户A用户登录,加上with admin option方式赋予B用户CONNECT权限

                A用户: grant connect on scott.emp to b;--如果没有加with grant option,在用户B处权限停止传递

            用户A登录可以自己撤销自己的CONNECT权限revoke connect from a;--可以撤销

            如果用户SYS用户撤销A用户CONNECT权限:revoke connect from a;

            而B用户仍然有CONNECT权限,并没有级联撤销,CONNECT权限在用户B处任然可以传递

    注意的是:系统权限不会级联撤销,但是当前用户可以撤销自己的权限,查看标识USER_ROLE_PRIVS表中ADMIN_OPRION=YES,则为可传递权限或角色。

 

你可能感兴趣的:(程序员记录)