基本的,众所周知对于ORACLE的系统权限,由sysdba角色的用户赋予用户A该权限,并通过WITH ADMIN OPTION将级联赋权的权限赋予用户A,A又将该权限赋予用户B时,B的该系统权限既可被A用户收回,也可被sysdba角色的用户收回(简述为系统权限可跨用户收回)。

那么,对象权限是否可以进行与上述类似的跨用户收回?本实验旨在讨论这个问题

实验名称:ORACLE对象权限跨用户收回的可行性

实验目的:研究ORACLE对象权限是否可以进行跨用户收回

实验准备:

创建两个用户A和B并赋予密码,并且创建时两个用户均为非锁定状态:
CREATE USER a IDENTIFIED BY oracle ACCOUNT UNLOCK;
CREATE USER b IDENTIFIED BY oracle ACCOUNT UNLOCK;

实验过程:

// 先检查用户a和用户b都没有对hr.employees的SELECT权限
SQL> 
SQL> SELECT GRANTEE,OWNER,TABLE_NAME,PRIVILEGE FROM user_tab_privs WHERE GRANTEE = 'A';

no rows selected

SQL> SELECT GRANTEE,OWNER,TABLE_NAME,PRIVILEGE FROM user_tab_privs WHERE GRANTEE = 'B';

no rows selected

// 登录hr,将对hr.employees的SELECT权限赋给用户a
SQL> CONN hr/hr
Connected.
SQL> 
SQL> 
SQL> GRANT SELECT ON employees TO a WITH GRANT OPTION;

Grant succeeded.

// 查询用户a的对象权限
SQL> SELECT GRANTEE,OWNER,TABLE_NAME,PRIVILEGE FROM user_tab_privs WHERE GRANTEE = 'A';

GRANTEE          OWNER          TABLE_NAME           PRIVILEGE
-------------------- -------------------- -------------------- --------------------
A             HR           EMPLOYEES           SELECT

//用a用户把对hr.employees的SELECT权限赋给用户b
SQL> CONN a/oracle
Connected.
SQL> 
SQL> GRANT SELECT ON hr.employees TO b;

Grant succeeded.

// 查询用户b的对象权限
SQL> SELECT GRANTEE,OWNER,TABLE_NAME,PRIVILEGE FROM user_tab_privs WHERE GRANTEE = 'B';

GRANTEE          OWNER          TABLE_NAME           PRIVILEGE
-------------------- -------------------- -------------------- --------------------
B             HR           EMPLOYEES           SELECT

SQL> 
SQL>

//用hr用户收回用户b对 hr.employees的SELECT权限
SQL> CONN hr/hr
Connected.
SQL> 
SQL> REVOKE SELECT ON hr.employees FROM b;
REVOKE SELECT ON hr.employees FROM b
*
ERROR at line 1:
ORA-01927: cannot REVOKE privileges you did not grant

//用sys用户收回用户b对 hr.employees的SELECT权限
SQL> CONN sys/oracle as sysdba;
Connected.
SQL> 
SQL> 
SQL> REVOKE SELECT ON hr.employees FROM b;
REVOKE SELECT ON hr.employees FROM b
*
ERROR at line 1:
ORA-01927: cannot REVOKE privileges you did not grant

//查看用户b对hr.employees的SELECT权限的直接赋权者,是用户A
SQL> CONN b/oracle
Connected.
SQL> 
SQL> SELECT GRANTEE,OWNER,TABLE_NAME,PRIVILEGE,GRANTOR FROM user_tab_privs WHERE GRANTEE='B';

GRANTEE          OWNER          TABLE_NAME           PRIVILEGE        GRANTOR
-------------------- -------------------- -------------------- -------------------- --------------------
B             HR           EMPLOYEES           SELECT            A

//用A用户收回用户b对 hr.employees的SELECT权限
SQL> 
SQL> conn a/oracle;
Connected.
SQL> 
SQL> REVOKE SELECT ON hr.employees FROM b;

Revoke succeeded.

//查看用户b对hr.employees的SELECT权限
SQL> 
SQL> conn b/oracle;
Connected.
SQL> SELECT GRANTEE,OWNER,TABLE_NAME,PRIVILEGE,GRANTOR FROM user_tab_privs WHERE GRANTEE='B';

no rows selected

SQL>

实验结果:用 hr用户 把对 hr.employees的SELECT权限添加WITH GRANT OPTION 选项 赋给 用户a 并且 由 用户a 把对 hr.employees的SELECT权限赋给用户b以后,
          无论是hr用户还是sys用户,都无法直接收回用户b对hr.employees的SELECT权限。

实验结论:对象权限不可以跨用户(包括sys用户)收回,仅可以被该权限的直接赋权者收回。

ORACLE对象权限被非授权用户收回的可行性探究相关推荐

  1. oracle对象权限回收,【Privilege】Oracle对象权限级联收回现象测试

    Oracle权限分为系统权限和对象权限.在文章<[Privilege]Oracle系统权限非级联收回现象测试>(http://space.itpub.net/519536/viewspac ...

  2. oracle对象权限 函数,oracle的系统和对象权限

    alter any cluster 修改任意簇的权限 alter any index 修改任意索引的权限 alter any role 修改任意角色的权限 alter any sequence 修改任 ...

  3. Oracle 用户、对象权限、系统权限

    一.用户与模式 用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象SYSTEM用户,缺省始终创建,且未 ...

  4. Oracle的对象权限、角色权限、系统权限

    Oracle的对象权限.角色权限.系统权限 一.用户与模式 用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作 SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联 ...

  5. 详解:Oracle 数据库空间表、自定义用户、权限管理、序列、同义词、索引

    一:数据库空间表 表空间是数据库逻辑结构的一个重要组件,可以存放各种应用对象,如表.索引.每一个表空间由一个或多个数据文件组成. 表空间分类: 1.永久性表空间 一般保存表.视图.过程和索引等的数据. ...

  6. oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,

    [学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...

  7. Oracle管理权限和角色

    Oracle管理权限和角色 基本介绍 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必需为其授予系统的权限:如果用户要访问其它方案的对象,则必需为其授予对象 ...

  8. oracle all_policies,Oracle数据库权限管理学习笔记

    1)权限,角色和用户的关系 权限(privilege):Oracle数据库预先定义好的.执行某些操作的能力. 角色(role):一组相关权限的集合.可以利用角色来简化权限的管理. 用户(user):通 ...

  9. oracle数据库权限

    Oracle权限大全 - 暖然 - 博客园 (cnblogs.com) 一.系统权限 用户在当前架构下所具有的权限,是系统规定的权限. 二.角色权限 DBA:用户具有数据库所有的权限. connect ...

最新文章

  1. 目标检测一卷到底之后,终于有人为它挖了个新坑|CVPR2021 Oral
  2. wkwebview 文件服务器,WKWebView 加载沙盒图片和音视频文件失败
  3. 【学术相关】国内考博需要怎么准备?难度大吗?有什么建议?
  4. 12.通过HTTP API对InfluxDB数据库作操作
  5. 211. 添加与搜索单词 - 数据结构设计
  6. Extracting Text From Image
  7. 福州大学c语言考试答案,C语言练习模拟考福州大学工程技术学院.doc
  8. SAP License:SAP关键用户职责
  9. linux查看mariadb安装卸载,MySQL——在Linux下安装和卸载MariaDB
  10. 如何动态获取UILabel的高度、宽度
  11. 把代码迁移动Google Code里
  12. mysql 延时update_转 MySQL延迟更新索引(delay_key_write)
  13. 商易淘宝全屏海报代码生成工具 使用说明
  14. mysql有rollup函数,Mysql,Oracle使用rollup函数完成行列统计
  15. maven jar坐标和doc引入中央创库没有的jar
  16. 武汉为什么进不了互联网第一梯队?
  17. scp cp
  18. 微信小程序上实现 table 表格
  19. Android ANR问题总结
  20. PhpStorm-2017.3

热门文章

  1. 浏览器首页被篡改,教你如何改回来!
  2. 【华为诺亚方舟实验室】招聘:决策推理(强化学习)研究方向(实习、应届、社招、博后)均可以
  3. 【问题解决】外部环境分析
  4. 齿轮箱数据集_齿轮箱的类型-精选资料
  5. 在genymotion官网下载genymotion-2.6.0-vbox.exe安装完成模拟器不可用的问题解决
  6. 紫光同创软件synplify.srr failed
  7. 常见的信号平滑处理方法
  8. solidworks正版软件价格是多少呢?2020年获得solidworks正版软件报价的方法
  9. 苹果开发者账号如何Upload CSR file
  10. ym——Android酷炫实用的开源框架(UI框架)(终)