ITPub博客

首页 > 数据库 > Oracle > public公共权限的认识

public公共权限的认识

原创 Oracle 作者:ygzhou518 时间:2011-04-14 20:28:03 0 删除 编辑
      public用户权限-----用户公共权限
       
       凡是数据库中的用户都会自动继承 public的权限,以此有可能对数据造成不安全的隐患,下面以例子说明:
 实验背景:
       1、 数据库用户user_name=ygzhou创建有表tab1、tab2、tab3、tab4、tab5...
       2、 需要新建用户user_name=test对表ygzhou.tab1拥有select权限
 
步骤:
       (1) 以sys用戶连接到数据库 sqlplus "/as sysdba"
       (2) 创建用户ygzhou,并赋予创建表的权限
SQL>show user;  ---------------------->sys
SQL>create user ygzhou identified by ygzhou; ---->创建默认表空间为USER的用户
SQL>grant create table to ygzhou;
SQL>grant unlimited tablespace to ygzhou;
       (3) 用户ygzhou创建表tab,并向表中插入数据
SQL>conn ygzhou/ygzhou
SQL>SHOW USER --------->YGZHOU
SQL>CREATE TABLE TAB1(ID INT);---------->创建多个表
SQL>INSERT INTO TAB1 VALUES(1);---------->插入多条数据
       (4) 创建用户 test
SQL>CONN SYS/PASSWORD AS SYSDBA
SQL>CREATE USER TEST IDENTIFIED BY TEST;
SQL>grant create session to test;
SQL>grant select on ygzhou.tab1 to test;
   ok!
 此时用户test只拥有用户下tab1的select权限,对ygzhou用户的其他表没有任何权限。
      
做public公共权限测试:
         (5)  此时对表做public权限设置:
SQL>conn ygzhou/ygzhou
SQL> grant select on tab2 to public;
            grant insert on tab3 to public;
            grant delete on tab4 to public;
            grant  update on tab5 to public;
         (6) 移除用户test对表tab1的select权限
SQL>conn sys/password as sysdba
SQL>revoke select on ygzhou.tab1 to test;
        (7)  验证test用户的权限
SQL>select count(*) from tab2; ------------>查询结果为插入tab2 的数据记录
SQL>insert into tab3 values();----------->可以下用户ygzhou下的表tab3插入数据
   .
   .
         (8) 此时用revoke移除test继承public的权限
revoke  select on tab2 from test;-------------------->出现错误、显示无法移除
         (9) 在public拥有权限的时候,如果想要让test用户没有权限,只能明确的拒绝用户test
SQL>deny select on tab2 to test;
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24867586/viewspace-692539/,如需转载,请注明出处,否则将追究法律责任。

上一篇: DB实施项目
请登录后发表评论 登录
全部评论

注册时间:2011-02-11

  • 博文量
    167
  • 访问量
    367661