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。

  • 相关阅读:
    kerberos
    BZOJ 3309 莫比乌斯反演
    Pollard_rho定理 大数的因数个数 这个板子超级快
    POJ 3171 区间覆盖最小值&&线段树优化dp
    拼题 L2-001 紧急救援 最短路计数+记录路径
    HDU 6464 权值线段树 && HDU 6468 思维题
    HDU 1394 线段树求逆序对
    [Poi2010]Bridges 最大流+二分答案 判定混合图欧拉回路
    01背包 多重背包 复习 模板
    CF 2018 Battle of Brains GYM 102062 F
  • 原文地址:https://www.cnblogs.com/avivaye/p/3498015.html
Copyright © 2011-2022 走看看