zoukankan      html  css  js  c++  java
  • [oracle] oracle权限传递

    三个用户:SYS、lisi、wangwu


    ① 系统权限的传递

    lisi的初始化系统权限
    SQL> select * from user_sys_privs;
    USERNAME                       PRIVILEGE                                ADM
    ------------------------------ ---------------------------------------- ---
    PUBLIC                         CREATE ANY TABLE                         NO
    LISI                           CREATE SESSION                           NO
    LISI                           CREATE TABLE                             NO
    LISI                           UNLIMITED TABLESPACE                     NO
    
    wangwu的初始化系统权限
    SQL>  select * from user_sys_privs;
    USERNAME                       PRIVILEGE                                ADM
    ------------------------------ ---------------------------------------- ---
    PUBLIC                         CREATE ANY TABLE                         NO
    WANGWU                         CREATE TABLE                             NO
    WANGWU                         CREATE SESSION                           NO
    WANGWU                         UNLIMITED TABLESPACE                     NO

    现在SYS将修改任意表的系统权限赋予lisi

    SQL> grant alter any table to lisi;
    授权成功。

    现在lisi的系统权限变为

    SQL> select * from user_sys_privs;
    
    USERNAME                       PRIVILEGE                                ADM
    ------------------------------ ---------------------------------------- ---
    PUBLIC                         CREATE ANY TABLE                         NO
    LISI                           CREATE SESSION                           NO
    LISI                           ALTER ANY TABLE                          NO
    LISI                           CREATE TABLE                             NO
    LISI                           UNLIMITED TABLESPACE                     NO

    注意此时新增项的ADM为NO
    现在我们将修改任意表的权限由lisi赋予给wangwu

    SQL> grant alter any table to wangwu;
    grant alter any table to wangwu
    *1 行出现错误:
    ORA-01031: 权限不足

    表明这样是无法级联授权的,SYS用户在授予lisi权限的时候需要给予管理选项
    SYS:

    SQL> grant alter any table to lisi with admin option;
    授权成功。

    lisi: 

    SQL> select * from user_sys_privs;
    
    USERNAME                       PRIVILEGE                                ADM
    ------------------------------ ---------------------------------------- ---
    PUBLIC                         CREATE ANY TABLE                         NO
    LISI                           CREATE SESSION                           NO
    LISI                           ALTER ANY TABLE                          YES
    LISI                           CREATE TABLE                             NO
    LISI                           UNLIMITED TABLESPACE                     NO

    这时ALTER ANY TABLE一行的ADM是yes,再将权限由lisi赋予给wangwu

    SQL> grant alter any table to wangwu;
    授权成功。

    这时wangwu还能将该权限赋予其他的用户吗?答案是NO

    wangwu:

    SQL>  select * from user_sys_privs;
    
    USERNAME                       PRIVILEGE                                ADM
    ------------------------------ ---------------------------------------- ---
    PUBLIC                         CREATE ANY TABLE                         NO
    WANGWU                         CREATE TABLE                             NO
    WANGWU                         CREATE SESSION                           NO
    WANGWU                         ALTER ANY TABLE                          NO
    WANGWU                         UNLIMITED TABLESPACE                     NO

    如果需要wangwu也有授予的功能,则lisi授权时需要再加上with admin option

    ② 对象权限的传递

    SYS用户新建一个表obj并将查询的权限赋予lisi

    SQL> create table obj(id int);
    表已创建。
    
    SQL> grant select on obj to lisi;
    授权成功。

    lisi查看自己的对象权限

    SQL> set linesize 400
    SQL> select * from user_tab_privs;
    
    GRANTEE        LISI  
    OWNER        SYS      
    TABLE_NAME    OBJ     
    GRANTOR        SYS  
    PRIVILEGE    SELECT   
    GRA            NO 
    HIE            NO

    将对象权限赋予wangwu需要SYS赋予lisi级联权限

    SQL> grant select on obj to lisi with grant option;
    授权成功。

    wangwu:

    SQL> select * from user_tab_privs;
    
    GRANTEE            WANGWU
    OWNER              SYS
    TABLE_NAME        USER_OBJECTS        
    GRANTOR           LISI
    PRIVILEGE       SELECT 
    GRA                NO
    HIE                NO

    同样的,如果需要wangwu也有授予的功能,则lisi授权时需要再加上with grant option。

  • 相关阅读:
    关于使用wcf架构分布式系统的一点想法
    vs2012 远程调试服务器上iis下的程序
    F#定义方法参数
    产生不重复的随机数
    巧在C#中设置多维动态数组,可以动态增加及删除
    C#时间相减
    css控制图片大小的方法
    常用网络命令
    DEDE SQL 常用语句
    未审核文档发布时间的自动更改方法for DEDEcms v5.3(修正版)
  • 原文地址:https://www.cnblogs.com/avivaye/p/3498015.html
Copyright © 2011-2022 走看看