无法创建的只读用户

根据需求,在oracle 11g用户创建只读用户。

Create user 用户名 identified by 密码;
grant connect, select any table to 用户名;

测试时,用户的确只能进行select操作。可是当实际创建好,之后我们发现,新建用户可以对一张在remote server上的表进行update的操作。

查询当前用户的所有权限

Select * from session_privs;

当前用户只有create session和select any table的权限。

我们不禁怀疑create session是否有附加的update权限。可是当我查询官方文档时,给出的答案是

CREATE SESSION Connect to the database.
SELECT ANY TABLE Query tables, views, or materialized views in any schema

无论是哪一种权限都不曾赋予用户update的权限。

于是,我们想尝试是否可以将用户update的权限从这张表上revoke掉。

REVOKE UPDATE ON 表名 FROM 用户名

结果报错,信息为我们并没有在这张表上赋予用户update的权限。

所以,目前的情况是,我们并没有赋予用户update的权限,用户也的确没有update的权限,可是为什么这个如此普通的用户却可以对这张表进行update的操作呢?我们开始怀疑这张表是不是开放了public权限。

我们尝试把用户的select any table权限,revoke掉。

REVOKE SELECT ANY TABLE FROM 用户名;

用户依旧可以搜索到这张表,并且已经可以进行update的操作。
当我们尝试用同一用户对另外一张并没有开放public权限的新表进行操作的时候,果然,此时只有connect权限的用户甚至无法搜到新表,更不用说进行update操作。

此时,问题找到了,当表开放了public权限,这张表就被赋予了被动技能,只要是一个可以连接到数据库的用户都可以对这张表进行被赋予public权限的操作,select,insert,update等等。无论用户有什么权限,只要他可以连接到数据库,他就可以对这张表进行操作,甚至你无法从用户端剥夺他操作的权利,即,无法进行revoke,因为你不曾grant。

目前,我们依旧在寻找有没有可以禁止该用户的操作,类似于只对某人不可见。如果有哪位大神有好的想法,希望可以与我交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值