• [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。

  • 相关阅读:
    mac OS 安装 Eclipse
    已有项目接入git远程仓库
    MutationObserver 监听 DOM 树变化
    MutationObserver 监听 DOM 树变化
    使用react脚手架create-react-app创建react应用
    Eclipse Mac OS版 卸载svn插件subclipse
    vuex
    Flutter仿网易云音乐:播放界面
    Flutter仿网易云音乐:播放界面
    C#完美读取CSV
  • 原文地址:https://www.cnblogs.com/avivaye/p/3498015.html
Copyright © 2020-2023  润新知