Oracle OS認證、口令檔案、密碼丟失處理

keeptrying發表於2013-11-20

一、OS認證

1OS認證介紹

Oracle安裝之後預設情況下是啟用了OS認證的,這裡提到的OS認證是指伺服器端OS認證。OS認證的意思是把登入資料庫的使用者和口令校驗放在了作業系統一級。如果以安裝Oracle時的使用者登入OS,那麼此時再登入Oracle資料庫時不需要任何驗證,如:

SQL> connect / as sysdba

已連線。

SQL> connect sys/system@abc as sysdba

已連線。

SQL> connect sys/bbb as sysdba

已連線。

SQL> connect aaa/bbb as sysdba

已連線。

SQL> show user;

USER "SYS"

SQL>

不論輸入什麼使用者(哪怕這個使用者如aaa在資料庫中根本不存在),只要以sysdba許可權連線資料庫,都可以連線上,並且連線使用者是sys,這樣很方便,有時候,如果忘記了資料庫的密碼,而又想登入資料庫,可以通過這種方式,前提是在資料庫伺服器上。

2OS認證相關引數

Oracle資料庫通過如下3個引數來實現OS認證:

l   (1). sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES引數。

l   (2). PFILE(SPFILE)檔案中的REMOTE_LOGIN_PASSWORDFILE引數。

l   (3). 口令檔案PWDsid.ora(Windows)或者orapwSID(linux,大小寫敏感).

1)、sqlnet.ora檔案引數

檔案位置:$ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES = (NTS)

引數可以有如下值:

SQLNET.AUTHENTICATION_SERVICES(NTS)|(NONE)

其中:

     (NTS):表示作業系統認證方式,不使用口令檔案,預設值。

     (NONE):口令檔案認證方式。

2)、REMOTE_LOGIN_PASSWORDFILE引數

該引數可以有如下值:

REMOTE_LOGIN_PASSWORDFILE=’NONE’|’EXCLUSIVE’|’SHARED’

其中:

l   NONE:不使用密碼檔案登入,不允許遠端使用者用sys登入系統,可以線上修改sys的密碼。

l   EXCLUSIVE預設值。只允許一個資料庫使用該密碼檔案,允許遠端登入,允許非sys使用者以sysdba身份管理資料庫,可以線上修改sys的密碼。在這種模式下,口令檔案可以包含用於多個特許的Oracle賬戶的口令。這是推薦的操作模式,特別是在執行RMAN時,如果希望將RMAN與來自於遠端客戶端的資料庫連線,則必須使用該引數設定。

l   SHARE:可以多個資料庫使用密碼檔案。實際上是這樣的:Oracle資料庫在啟動時,首先查詢的是orapw的口令檔案,如果該檔案不存在,則開始查詢orapw的口令檔案。如果口令檔案命名為orapw,多個資料庫就可以共享,允許遠端登入,只能用sys進行sysdba管理,可以線上修改sys的密碼。在此設定下只有INTERNAL/SYS賬號能被識別,即使檔案中存有其它使用者的資訊,也不允許他們以SYSOPER/SYSDBA登入。

修改

SQL> ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

需要注意的是:這個引數不是動態引數,需要在資料庫載入到mount狀態下修改,另外改變以後需要重啟資料庫,引數的設定才能生效。

3、禁用OS認證

OS認證存在一定的安全隱患,可以遮蔽OS認證。

1)、Windows

Windows下只要把$ORACLE_HOME/network/admin/sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES=(NTS)改成NONE或者註釋掉這句話(前面加上#),就可以遮蔽OS功能,要想以sys使用者連上資料庫必須輸入正確的sys口令,或者可以把Oracle的安裝使用者從組ora_dba中刪除掉,當然也可以直接把ora_dba這個組也刪除,都可以遮蔽os認證功能。

如:

SQL> connect / as sysdba

ERROR:

ORA-01031: 許可權不足

警告: 您不再連線到 ORACLE

SQL> connect sys/aaa as sysdba

ERROR:

ORA-01017: 使用者名稱/口令無效; 登入被拒絕

SQL> connect aaa/bbb as sysdba

ERROR:

ORA-01031: 許可權不足

SQL> connect sys/system as sysdba

已連線。

2)、Linux/UNIX

在檔案sqlnet.ora中增加SQLNET.AUTHENTICATION_SERVICES=(NONE)以及刪除dbagroupdel dba)組或者把oracle使用者從dba組中刪除都可以遮蔽os認證。

注意:使用這種遮蔽方法,系統管理員還是可以建立ora_dba or dba組以及修改sqlnet.ora檔案。

二、口令檔案

1、口令檔案說明

Oracle的口令檔案的作用是存放所有以sysdba或者sysoper許可權連線資料庫的使用者的口令。如果想以sysdba許可權遠端連線資料庫,必須使用口令檔案,否則不能連上。由於sys使用者在連線資料庫時必須以sysdba or sysoper方式,也就是說sys使用者要想連線資料庫必須使用口令檔案,因此我認為在資料庫中存放sys使用者的口令其實沒有任何意義。使用口令檔案的好處是即使資料庫不處於open狀態,依然可以通過口令檔案驗證來連線資料庫。開始安裝完oracle,沒有給普通使用者授予sysdba許可權,口令檔案中只存放了sys的口令,如果之後把sysdba許可權授予了普通使用者,那麼此時會把普通使用者的口令從資料庫中讀到口令檔案中儲存下來,當然這是必須要求資料庫處於open狀態。

2、檢視具有sysdba許可權的使用者

可以通過查詢v$pwfile_users檢視來檢視有幾個使用者被授予了sysdba或者sysoper許可權,v$pwfile_users的資訊就是來源於口令檔案。

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP

------------------------------ ----- -----

SYS                            TRUE  TRUE

LXH                            TRUE  FALSE

USR1                           TRUE  TRUE

到底可以有幾個使用者被授予sysdba或者sysoper許可權,是由建立口令檔案時指定的entries數決定的,準確的說還不完全是,最終還和os block的大小有關,如果entries指定了5,一個os block可以存放8個使用者的口令,那麼可以有8個使用者被授予sysdba或者sysoper

注意:事實是口令多長,加密之後的長度幾乎都是相同的。也就是說口令檔案佔用的大小和口令指定的長度幾乎關係不大。

c:\>orapwd file=databasepwd.ora password=system entries=5

OPW-00005: 存在同名檔案 - 請刪除或重新命名

c:\>orapwd file=databasepwd.ora password=system entries=5 force=y

建立口令檔案需要注意的是=前後沒有空格。在10g增加了一個新的引數force defaultn,它的作用類似於建立表空間時的reuse功能,當同名檔案存在時是否覆蓋。

是否使用口令檔案,由remote_login_passwordfile引數控制,這個引數在上面有說明。

3、口令檔案格式

Windows下口令檔案的格式是pwdsid.ora(大小寫敏感)

UNIX下的格式是orapwSID(大小寫敏感)

Oracle資料庫在啟動時,首先查詢的是orapw的口令檔案,如果該檔案不存在,則開始查詢orapw的口令檔案,如果口令檔案命名為orapw,多個資料庫就可以共享。口令檔案建立完後,資料庫需要重啟,新的口令檔案才能生效。

4sys/system密碼丟失的處理方法

1)、查詢檢視v$pwfile_users,記錄下擁有sysoper/sysdba系統許可權的使用者資訊。

2)、關閉資料庫

3)、將密碼檔案重新命名

4)、用orapwd命令重建密碼檔案

orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=admin entries=5   force=y

5)、將第一步查出來的使用者新增到密碼檔案

grant sysdba,sysoper to user;





轉載自Dave:http://blog.csdn.net/tianlesoftware/article/details/4698293


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25744374/viewspace-777048/,如需轉載,請註明出處,否則將追究法律責任。

相關文章