查看: 6293|回复: 5

[原创] Oracle系统权限与实体权限精简总结

[复制链接]
求职 : 数据库管理员
论坛徽章:
45
祖国60周年纪念徽章
日期:2015-05-19 13:02:04itpub13周年纪念徽章
日期:2014-12-30 09:02:122010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:192014数据库大会纪念章
日期:2015-04-23 10:33:192015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24暖羊羊
日期:2015-05-13 18:24:182015年新春福章
日期:2015-05-30 17:02:05
跳转到指定楼层
1#
发表于 2013-3-26 12:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zcs0237 于 2013-8-3 21:59 编辑

本专题的三篇文章
Oracle用户及用户配置文件精简总结
http://www.itpub.net/thread-1775065-1-1.html
Oracle的登陆认证方式精简总结
http://www.itpub.net/thread-1774785-1-1.html
Oracle权限精简总结
http://www.itpub.net/thread-1775562-1-1.html


第01部分 权限概述
一、新建用户无任何权限、角色
新建用户默认没有create session权限、connect角色。

二、权限、角色相关的数据字典
SQL> select table_name from dict where TABLE_NAME like '%\_PRIVS' escape '\' ORDER BY table_name ASC;
ALL_COL_PRIVS         表示列上的授权,用户和PUBLIC是被授予者
ALL_TAB_PRIVS         表示对象上的授权,用户是PUBLIC或被授予者或用户是属主
DBA_COL_PRIVS         数据库列上的所有授权
DBA_ROLE_PRIVS        显示已授予用户或其他角色的角色
DBA_SYS_PRIVS         已授予用户或角色的系统权限
DBA_TAB_PRIVS         数据库对象上的所有权限
ROLE_ROLE_PRIVS       显示已授予用户的角色
ROLE_SYS_PRIVS        显示通过角色授予用户的系统权限
ROLE_TAB_PRIVS        显示通过角色授予用户的对象权限
SESSION_PRIVS         显示用户现在可利用的所有系统权限
USER_COL_PRIVS        显示列上的权限,用户是属主、授予者或被授者
USER_ROLE_PRIVS       显示已授予给用户的所有角色
USER_SYS_PRIVS        显示已授予给用户的所有系统权限
USER_TAB_PRIVS        显示已授予给用户的所有对象权限

第02部分 系统权限(使用系统资源)
02.1 常用系统权限

SQL> select count(*) from sys.system_privilege_map;
  COUNT(*)
----------
       166                 //10g共有166种系统权限
一、有关用户的系统权限如下
CREATE USER:创建其他的用户(需要具有DBA角色的权限)
ALTER USER:修改其他用户的设置
DROP USER:删除其他用户
二、有关表的系统权限如下
GRANT select any table to zcs;  zcs用户无法访问SYS用户中的DBA_系列视图、数据字典表
UPDATE ANY TABLE:修改任何用户的表中的数据和视图中的数据
DELETE ANY TABLE:删除任何用户表中的数据和视图中的数据
CREATE ANY TABLE:在任何模式中创建表
DROP ANY TABLE:删除任何模式中所创建的表
ALTER ANY TABLE:修改任何模式中所创建的表
CREATE TABLE:用户在自己的模式中创建表
三、有关表空间的系统权限如下
CREATE TABLESPACE:创建表空间的权限
DROP TABLESPACE:删除表空间的权限
ALTER TABLESPACE:修改表空间的权限
UNLIMITED TABLESPACE:使用全部表空间的权限
四、有关索引的系统权限如下
CREATE ANY INDEX:在任何模式中创建索引的权限
DROP ANY INDEX:在任何模式中删除索引的权限
ALTER ANY INDEX:在任何模式中修改索引的权限
五、有关会话的系统权限如下
CREATE SESSION:连接数据库的权限
ALTER SESSION:发ALTER SESSION语句的权限
六、其他的系统权限:
CREATE VIEW:在用户自己的模式中创建视图的权限
CREATE SEQUENCE:在用户自己的模式中创建序列号的权限
CREATE PROCEDURE:在用户自己的模式中创建过程的权限
七、administrative privilege对比SYSDBA &SYSOPER
注:改字符集会用到alter system enable restricted session仅管理员能登录,其它用户登录须GRANT restricted session


SQL> show user
USER is "SYS"   //schema为SYS
SQL> select name from sys.system_privilege_map where name like '%SYS%' and NAME not like '%SYSTEM%';
NAME       //SYSDBA和SYSOPER是权限名,而非角色名
--------------------
SYSOPER
SYSDBA
SQL> select * from v$pwfile_users
USERNAME SYSDBA   SYSOPER; //列sysdba/sysoper用户
-------- -------- --------
SYS      TRUE     TRUE
TEST     TRUE     FALSE
SQL> conn / as sysoper
Connected.
SQL> show user
USER is "PUBLIC"     //schema为PUBLIC

02.2 系统权限传递(撤消时不级联)
撤消带有admin option 的system privileges 时,连带的权限将保留。
一、准备工作
SQL> CONN / AS SYSDBA
Connected.
SQL> create user zcs1 identified by zcs1;
User created.           // sys新增zcs1/zcs1
SQL> create user zcs2 identified by zcs2;
User created.          // sys新增zcs2/zcs2
二、SYS授权zcs1=create session+with admin option
SQL> CONN / AS SYSDBA
Connected.
SQL> grant create session to zcs1 with admin option;
Grant succeeded        //用sys授予zcs1 create session
SQL> conn zcs1/zcs1
Connected.
SQL> select * from user_sys_privs;
USERNAME       PRIVILEGE         ADM
-------------  ---------------     ---
ZCS1           CREATE SESSION     YES
三、zcs授权zcs2= create session
SQL> conn zcs1/zcs1
Connected.
SQL> grant create session to zcs2;
Grant succeeded.
SQL> conn zcs2/zcs2
Connected.
SQL> select * from user_sys_privs;
USERNAME        PRIVILEGE       ADM
--------------- --------------- ---
ZCS2            CREATE SESSION  NO
四、SYSDBA撤消zcs1的create session,zcs无影响
SQL> conn / as sysdba
Connected.
SQL> revoke create session from zcs1;
Revoke succeeded.
SQL> conn zcs1/zcs1
ERROR:
ORA-01045: user ZCS1 lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
SQL> conn zcs2/zcs2
Connected.   // 验证zcs2是否还有create session权限
==============增补START====================

SQL> select * from session_privs;
CREATE SESSION               //查询当前用户所拥有的权限
SQL>  select * from user_sys_privs;
USERNAME  PRIVILEGE       ADM
-------- -     -------------------       ---
ZCS1     CREATE SESSION     NO
SQL> conn / as sysdba
Connected.
SQL> select * from DBA_SYS_PRIVS where grantee='ZCS1';
GRANTEE      PRIVILEGE       ADM
------------ ------------------------------       ---
ZCS1         CREATE SESSION     NO   //须DBA权限

================增补END==========================

第03部分 实体权限(操纵特定的对象)

03.1实体权限分类
一、列出所有权限
SQL> select * from dict where TABLE_NAME='DBA_OBJECTS';
DBA_OBJECTS          All objects in the database
SQL> select OBJECT_NAME,OBJECT_TYPE from dba_objects where OBJECT_NAME='TABLE_PRIVILEGE_MAP';
TABLE_PRIVILEGE_MAP  TABLE
TABLE_PRIVILEGE_MAP  SYNONYM
SQL> select name from table_privilege_map;
ALTER            AUDIT
COMMENT      DELETE
GRANT          INDEX
INSERT          LOCK
RENAME        SELECT
UPDATE        REFERENCES
EXECUTE       CREATE
READ            WRITE
ENQUEUE      DEQUEUE
UNDER          ON COMMIT REFRESH
QUERY          REWRITE DEBUG
FLASHBACK   MERGE VIEW
24 rows selected..

二、使用GRANT授权
SQL>grant update on t1 to zcs with grant option;
SQL>grant update(id) on t10 to zcs with grant option;
SQL>grant all on t1 to public;  // public表示是全体用户,此处all不包括drop t1。

03.2实体权限传递(撤消时会级联)
一、准备工作

SQL> CONN / AS SYSDBA
Connected.
SQL> grant create session to zcs1;
Grant succeeded.// 授予zcs1接数据库的权限
SQL> grant create session to zcs2;
Grant succeeded.// 授予zcs2连接数据库的权限
SQL> create table test1(id int);
Table created.   //建test1表
SQL> insert into test1 values(1);
1 row created.  //向test1插入数据
二、SYS授权zcs1=select+with grant option
SQL> grant select on test1 to zcs1 with grant option;
Grant succeeded.  // 授予用户zcs1查询表权限
SQL> conn zcs1/zcs1
Connected.
SQL> select * from sys.test1;
        ID NAME
---------- ---------
         1 zcs1
三、ZCS1 授权ZCS2=select
SQL> show user
USER is "ZCS1"
SQL> grant select on sys.test1 to zcs2;
Grant succeeded.  //用zcs1用户授予zcs2查询表test1权限
SQL> conn zcs2/zcs2
Connected.
SQL> select * from sys.test1;
        ID NAME
---------- ---------
         1 zcs1
         2 zcs2
四、SYS撤消ZCS1的select,zcs2也受影响
SQL> conn / as sysdba
Connected.
SQL> revoke select on test1 from zcs1;
Revoke succeeded.
SQL> conn zcs1/zcs1
Connected.
SQL> select * from sys.test1;
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> conn zcs2/zcs2
Connected.
SQL> select * from sys.test1;
ERROR at line 1:
ORA-00942: table or view does not exist



论坛徽章:
249
Jeep
日期:2013-09-04 19:17:57Jeep
日期:2013-10-08 09:46:02Jeep
日期:2013-10-08 16:38:27Jeep
日期:2013-11-22 14:53:46Jeep
日期:2013-11-08 23:59:45Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-11-17 09:59:04季节之章:夏
日期:2015-01-28 14:58:51季节之章:春
日期:2014-12-25 16:20:50
2#
发表于 2013-3-26 12:43 | 只看该作者

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
3#
发表于 2013-3-26 13:00 | 只看该作者
果断好帖子啊~~~

使用道具 举报

回复
论坛徽章:
764
生肖徽章:鸡
日期:2014-08-13 14:39:24奥运会纪念徽章:跳水
日期:2012-07-16 09:48:41奥运会纪念徽章:自行车
日期:2013-06-17 12:13:43奥运会纪念徽章:沙滩排球
日期:2013-06-17 12:11:20复活蛋
日期:2013-03-29 10:50:57比亚迪
日期:2013-09-29 13:21:57Jeep
日期:2013-09-29 13:54:002014年世界杯参赛球队: 加纳
日期:2014-05-20 17:24:592014年世界杯参赛球队:墨西哥
日期:2014-05-20 17:25:142014年世界杯参赛球队: 波黑
日期:2014-05-20 17:27:29
4#
发表于 2013-3-26 14:09 | 只看该作者
8错

使用道具 举报

回复
论坛徽章:
9
授权会员
日期:2013-01-22 11:01:412013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-02-27 17:15:43双黄蛋
日期:2013-03-26 10:49:16奥运会纪念徽章:排球
日期:2013-04-01 17:15:18奥运会纪念徽章:沙滩排球
日期:2013-04-01 17:15:33奥运会纪念徽章:垒球
日期:2013-04-01 17:15:33蛋疼蛋
日期:2013-04-04 10:01:10奥运会纪念徽章:排球
日期:2013-04-11 18:16:37
5#
发表于 2013-3-26 14:16 | 只看该作者
好贴必须得顶啊!谢谢分享!~

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
6#
发表于 2013-3-26 20:55 | 只看该作者
总结的不错啊

使用道具 举报

回复
论坛徽章:
23
ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42宝马
日期:2013-12-01 20:46:04马自达
日期:2014-01-01 13:15:292014年新春福章
日期:2014-02-18 16:47:53马上加薪
日期:2014-02-18 16:47:53慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39双鱼座
日期:2015-10-31 19:52:32秀才
日期:2015-12-21 09:48:11秀才
日期:2016-02-18 09:23:46
7#
发表于 2013-3-26 21:09 | 只看该作者
顶楼主一个

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
45
祖国60周年纪念徽章
日期:2015-05-19 13:02:04itpub13周年纪念徽章
日期:2014-12-30 09:02:122010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:192014数据库大会纪念章
日期:2015-04-23 10:33:192015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24暖羊羊
日期:2015-05-13 18:24:182015年新春福章
日期:2015-05-30 17:02:05
8#
 楼主| 发表于 2013-3-26 21:42 | 只看该作者
以学习之名 发表于 2013-3-26 21:09
顶楼主一个

修补
四、SYSDBA撤消zcs1的create session,zcs无影响
SQL> conn / as sysdba
Connected.
SQL> revoke create session from zcs1;
Revoke succeeded.
SQL> conn zcs1/zcs1
ERROR:
ORA-01045: user ZCS1 lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
SQL> conn zcs2/zcs2
Connected.   // 验证zcs2是否还有create session权限
SQL> select * from session_privs;
CREATE SESSION  //查询当前用户所拥有的权限
SQL>  select * from user_sys_privs;
USERNAME  PRIVILEGE       ADM
-------- -     -------------------       ---
ZCS1     CREATE SESSION     NO
SQL> conn / as sysdba
Connected.
SQL> select * from DBA_SYS_PRIVS where grantee='ZCS1';
GRANTEE      PRIVILEGE                      ADM
------------ ------------------------------ ---
ZCS1         CREATE SESSION                 NO

使用道具 举报

回复
论坛徽章:
70
夏利
日期:2013-09-29 21:02:15天蝎座
日期:2016-03-08 22:25:51嫦娥
日期:2014-03-04 16:46:45ITPUB年度最佳技术原创精华奖
日期:2014-03-04 16:19:29马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:11
9#
发表于 2013-3-27 07:59 | 只看该作者
很基础,不错。

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
45
祖国60周年纪念徽章
日期:2015-05-19 13:02:04itpub13周年纪念徽章
日期:2014-12-30 09:02:122010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:192014数据库大会纪念章
日期:2015-04-23 10:33:192015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24暖羊羊
日期:2015-05-13 18:24:182015年新春福章
日期:2015-05-30 17:02:05
10#
 楼主| 发表于 2013-3-27 09:22 | 只看该作者
vage 发表于 2013-3-27 07:59
很基础,不错。

感谢版主点评。。。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表