欢迎各位兄弟 发布技术文章
这里的技术是共享的
USER 存放的VIEW
SELECT USERNAME, PROFILE, ACCOUNT_STATUS FROM DBA_USERS;
系統权限存放的VIEW
select * from system_privilege_map
DBA_USERS 显示用户的信息
DBA_ROLES 显示数据库中所有角色
DBA_ROLE_PRIVS 显示用户及其角色
DBA_SYS_PRIVS 显示被授予系统权限的用户
DBA_TAB_PRIVS 显示用户及他们在表上的权限
USER_SYS_PRIVS 當前用戶擁有的系統權限
USER_TAB_PRIVS 當前用戶擁有的對象權限
USER_ROLE_PRIVS 當前用戶擁有的角色
ROLE_SYS_PRIVS 角色擁有的系統權限
ROLE_TAB_PRIVS 角色擁有的對象權限
--(13)由(12),(13)可推估 revoke select on eis.eis_log from apps 但仍可在apps 下查看eis_log 表的內容
--是因為user apps 具有DBA ROLE 中 SELECT ANY TABLE ,即使revoke 某一表但都會無效.
--接下來驗證
connect system/apps@t-js;
grant DBA TO KEVIN;
--如已開啟connect kevin/kevin@t-js 必需關閉
connect kevin/kevin@t-js;
select * from eis.eis_log; -- ok 可以取出資料
--(14)連接到user eis, revoke kevin 可以查看eis 的表(eis_log)
connect eis/eis@t-js;
grant select on eis_log to kevin;
revoke select on eis_log from kevin;
--(15)重新連接到kevin 確認是否能看到eis.eis_log 表的內容
connect kevin/kevin@t-js;
select * from eis.eis_log; --ok
--斷開再重連仍然是ok 因此原因就出在APPS 具有select any table 權限