P 2009-08-13:23:22:20 EXPIRED
& LOCKED
Oracle用户安全管理(二)
SPATIAL_WFS_ADMIN_USR USERS TEMP 2009-08-13:23:22:15 EXPIRED
& LOCKED
& LOCKED
二、授予和撤销权限
1、权限分为两大类,
系统权限和对象权限
(1)系统权限:允许用户在数据库中执行特定的操作
A、SYSDBA/SYSOPER这两个权限比较特殊
gyj@OCM> select * from dba_sys_privs where granteein('SYSDBA',
'SYSOPER');
'SYSOPER');
no rows selected
B、DBA的系统权限是可以查到的
gyj@OCM> select * from dba_sys_privs where grantee='DBA';
GRANTEE PRIVILEGE ADM
---------------------------------------------------------------------- ---
DBA DROP ANY CUBE BUILD PROCESS YES
DBA CREATE CUBE YES
DBA ALTER ANY CUBE DIMENSION YES
DBA ALTER ANY MINING MODEL YES
(中间结果省略)
…………………………..
202 rows selected.
C、普通用户的系统权限
gyj@OCM> select * fromdba_sys_privs where grantee='GYJ';
GRANTEE PRIVILEGE ADM
------------------------------ -------------------------------------------
GYJ UNLIMITED TABLESPACE NO
D、 当前会话上的系统权限
gyj@OCM> select * from session_privs;
PRIVILEGE
----------------------------------------
ALTER SYSTEM
AUDIT SYSTEM
CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
(中间结果省略)
……………………………
202 rows selected.
(2)对象权限:允许用户访问和操纵特定的对象
A、查对象权限
gyj@OCM> select * fromdba_tab_privs where grantee='GYJ';
no rows selected
B、查对象上列的权限
gyj@OCM>select * from dba_col_privs wheregrantee='GYJ';
no rows selected
为什么没显示对象的权限和对象上列的权限呢,用户GYJ明明有对象的呀:
gyj@OCM> show user;
USER is "GYJ"
gyj@OCM> select table_name from tabs;
TABLE_NAME
------------------------------
T10
好,我登录到HR用户下给GYJ用户授对象权限
sys@OCM> conn hr/hr
Connected.
hr@OCM> grant select on employees togyj;
Grant succeeded.
hr@OCM> grant update (department_id) onemployees to gyj;
Grant succeeded.
再次查对象权限就有结果了,这下明白这个意思了吧,好!这个就不多说了。
hr@OCM> select * from dba_tab_privs wheregrantee='GYJ';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
------------------------------------------------------------ ------------------------------------------
GYJ HR EMPLOYEES HR SELECT NO NO
hr@OCM> select * from dba_col_privs where grantee='GYJ';
GRANTEE OWNER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRA
------------------------------ ------------------------------------------------------------ -------------
GYJ HR EMPLOYEES DEPARTMENT_ID HR UPDATE NO
2、with admin option与with grantoption区别
(级联的意思就是第一个用户的权限再授予其他用户,如果第一个用户被取消了
该权限,那么通过其他通过第一个用户授予该权限的用户也被波及到,权限同
时被取消,不级联的话其他用户就不会被波及。)
该权限,那么通过其他通过第一个用户授予该权限的用户也被波及到,权限同
(1) with admin option系统权限赋予级联,取消是不级联的,如下图所示:
with admin option的意思是被授予该权限的用户有权将某个权限(如create
any table)授予其他用户或角色,取消是不级联的。
any table)授予其他用户或角色,取消是不级联的。
如管理员DBA授予Jeff系统权限create session with admin option,然后Jeff又
把createsession权限授予Emi,但DBA收回Jeff的create session权限时,Emi
依然拥有create session的权限。但管理员DBA可以显式收回Emi的
create session权限,即直接revoke create session from Emi;
把createsession权限授予Emi,但DBA收回Jeff的create session权限时,Emi
依然拥有create session的权限。但管理员DBA可以显式收回Emi的
create session权限,即直接revoke create session from Emi;
好!我们来做个测试:
A、 先建两用户Jeff和Emi
hr@OCM> conn / as sysdba
Connected.
sys@OCM> create user Jeff identified byJeff;
User created.
sys@OCM> create user Emi identified byEmi;
User created.
B、 管理员给Jeff系统权限createsession with admin option;
sys@OCM> grant create session to Jeff with admin option ;
Gr