作業系統管理角色
簡要描述一下如何使用作業系統管理角色。
首先,角色的建立已經給角色授予相應的許可權必須在資料庫中完成。只有給使用者授權角色的操作是由作業系統完成。
其次,使用者具有的角色是由作業系統的profile檔案(或使用者所在的組)決定的,只和作業系統使用者有關而與oracle的登陸使用者無關,以sysdba身份等錄除外。
使用作業系統管理角色,需要把初始化引數OS_ROLES設定為TRUE,然後重起oracle。
注意一點,一旦設定了OS_ROLES=TRUE,以前給使用者授權的所有角色都無效了。
SQL> conn yangtk/yangtk@test
已連線。
SQL> show parameter os_roles
NAME TYPE VALUE
------------------------------------ ----------- -------------------------
os_roles boolean FALSE
remote_os_roles boolean FALSE
SQL> ALTER SYSTEM SET OS_ROLES = TRUE SCOPE = SPFILE;
系統已更改。
SQL> CONN /@TEST AS SYSDBA
已連線。
SQL> SHUTDOWN
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> STARTUP
ORACLE 例程已經啟動。
Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 62914560 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> CONN YANGTK/YANGTK@TEST
ERROR:
ORA-01045: user YANGTK lacks CREATE SESSION privilege; logon denied
警告: 您不再連線到 ORACLE。
由於設定了OS_ROLES=TRUE,所以以前授權的dba角色失效了。
下面在作業系統中給使用者授權
Windows中 控制皮膚->計算機管理->本地使用者和組->組建立一個組 ora_test_dba_da,把當前使用者YANGTINGKUNytk加入(YANGTINGKUN為主機名,ytk為當前使用者名稱)。
組的名稱的每一部分都是有其固定含義的,他們之間用下劃線‘_’分隔。名稱必須以“ora”開頭,接下來的“test”表明資料庫的SID是test,由於作業系統可能對應多個資料庫,因此必須標明這個角色在那個資料庫中生效(這裡小心,對於unix系統,這個標識可是大小寫敏感的),然後跟著“dba”的是角色名,是在資料庫中建立的,並準備透過作業系統給使用者授權的角色。最後的“d”和“a”是可選引數,“d”表示這個角色是使用者的預設角色,使用者一旦登陸就具有的角色,如果沒有設定“d”,則使用者登陸後必須使用set role才能使用改角色。“a”表示admin option,即使用者具有管理該角色的許可權,可以把該角色授權給其他角色(只能授權給角色,不能是使用者,在OS_ROLES=TRUE的情況下,在oracle中給使用者授予角色是無效的)。
建好組之後,現在重新連線一下
SQL> CONN YANGTK/YANGTK@TEST
已連線。
SQL> select * from session_roles;
ROLE
------------------------------
DBA
SELECT_CATALOG_ROLE
HS_ADMIN_ROLE
EXECUTE_CATALOG_ROLE
DELETE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
GATHER_SYSTEM_STATISTICS
WM_ADMIN_ROLE
已選擇9行。
SQL> conn yangtk/yangtk@test
已連線。
SQL> select * from session_roles;
ROLE
------------------------------
DBA
SELECT_CATALOG_ROLE
HS_ADMIN_ROLE
EXECUTE_CATALOG_ROLE
DELETE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
GATHER_SYSTEM_STATISTICS
WM_ADMIN_ROLE
已選擇9行。
SQL> create role test_role;
角色已建立
SQL> grant dba to test_role;
授權成功。
SQL> grant dba to yangtk;
grant dba to yangtk
*
ERROR 位於第 1 行:
ORA-01956: 使用 OS_ROLES 時命令無效
可見,作業系統授權的角色已經生效。而且,角色的獲得與登陸oracle的使用者無關(sys除外)。
下面簡單看一個unix下面的例子。
已經將os_roles設定為true
SQL> conn / as sysdba
Connected.
SQL> show parameter os_roles
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_roles boolean TRUE
remote_os_roles boolean FALSE
SQL> create role role1;
Role created.
Elapsed: 00:00:01.32
SQL> grant create table to role1;
Grant succeeded.
Elapsed: 00:00:00.02
SQL> grant create session to yangtk;
Grant succeeded.
Elapsed: 00:00:14.43
SQL> grant unlimited tablespace to yangtk;
Grant succeeded.
Elapsed: 00:00:00.04
SQL> conn yangtk/yangtk
Connected.
SQL> create table a (id number);
create table a (id number)
*
ERROR at line 1:
ORA-01031: insufficient privileges
Elapsed: 00:00:09.21
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
$
$ su -
Password:
Sun Microsystems Inc. SunOS 5.8 Generic Patch October 2001
Sourcing //.profile-EIS.....
yangtk/yangtk@test # groupadd ora_test_role1
UX: groupadd: ora_test_role1 name too long.
UX: groupadd: ora_test_role1 name should be all lower case or numeric.
yangtk/yangtk@test # groups oracle
dba
yangtk/yangtk@test # vi /etc/group
"/etc/group" 18 lines, 309 characters
root::0:root
other::1:
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
staff::10:
daemon::12:root,daemon
sysadmin::14:
nobody::60001:
noaccess::60002:
nogroup::65534:
dba::101:
ora_test_role1::102:oracle
~
~
~
~
~
~
~
~
~
~
:q
yangtk/yangtk@test # groups oracle
dba ora_test_role1
yangtk/yangtk@test # exit
$ su - oracle
Password:
Sun Microsystems Inc. SunOS 5.8 Generic Patch October 2001
You have mail.
$ sqlplus yangtk/yangtk
SQL*Plus: Release 9.2.0.4.0 - Production on Wed Nov 17 17:31:56 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
SQL> select * from session_roles;
no rows selected
Elapsed: 00:00:00.09
SQL> create table b (id number);
create table b (id number)
*
ERROR at line 1:
ORA-01031: insufficient privileges
Elapsed: 00:00:02.51
SQL> set role role1;
Role set.
Elapsed: 00:00:00.01
SQL> create table b (id number);
Table created.
Elapsed: 00:00:00.22
SQL> select * from session_roles;
ROLE
------------------------------
ROLE1
Elapsed: 00:00:00.02
Unix下的授權和windows下的大同小異。
這個例子中建立一個沒有“d”選項的組,因此登陸到oracle後,必須set role才能具有該角色
[@more@]轉載http://blog.itpub.net/post/468/5415
謝謝yangtingkun
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-980382/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 作業系統-程式管理作業系統
- 作業系統裝置管理作業系統
- 作業系統篇-程式管理作業系統
- 【作業系統】程式管理(二)作業系統
- 作業系統-記憶體管理作業系統記憶體
- 分散式作業管理系統 Asgard分散式
- 程式設計作業——系統管理程式設計
- 作業系統——記憶體管理作業系統記憶體
- 資源管理與作業系統作業系統
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統
- 作業系統-5-程式管理(二)作業系統
- 作業系統之程式管理:16、管程作業系統
- 作業系統記憶體管理概述作業系統記憶體
- 作業系統(8)儲存器管理作業系統
- 作業系統記憶體管理-原理作業系統記憶體
- 【作業系統】記憶體管理概述作業系統記憶體
- 作業系統(二):作業系統結構作業系統
- 【作業系統】作業系統綜述(一)作業系統
- 作業系統 作業5作業系統
- 作業系統儲存器管理筆記作業系統筆記
- 【Linux】Linux作業系統 程式管理Linux作業系統
- 作業系統-記憶體、檔案管理作業系統記憶體
- 作業系統1—作業系統概論(上)作業系統
- 作業系統2—作業系統概論(下)作業系統
- Java作業系統課設之模擬程式管理系統Java作業系統
- 作業系統實驗5 簡易檔案管理系統作業系統
- 統信作業系統下資料庫管理利器作業系統資料庫
- 《作業系統》作業系統
- 作業系統作業系統
- [作業系統]作業系統
- 作業系統: Unix作業系統演進簡史作業系統
- 計算機作業系統|作業系統引論計算機作業系統
- 各個作業系統的 作業系統日誌作業系統
- Linux作業系統上必需要學的系統管理命令Linux作業系統
- 作業系統學習筆記:裝置管理作業系統筆記
- 【作業系統筆記】動態儲存管理作業系統筆記
- 作業系統(5)處理器排程管理作業系統