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

來源:互聯網
上載者:User

一.  OS認證

1.1  OS認證介紹

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

SQL> connect /as sysdba

已串連。

SQL> connect sys/aaa@test as sysdba

已串連。

SQL> connect sys/bbb as sysdba

已串連。

SQL> connect aaa/bbb as sysdba

已串連。

SQL> show user

SYS

SQL>

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

1.2  OS 認證相關的參數

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

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

(2)PFILE(或SPFILE)檔案中的參數REMOTE_LOGIN_PASSWORDFILE

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

1.2.1 sqlnet.ora 檔案參數

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

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

參數可以有如下值:

SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE)

其中:

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

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

1.2.2  REMOTE_LOGIN_PASSWORDFILE 參數

該參數可以有如下值:

REMOTE_LOGIN_PASSWORDFILE ='NONE'|'EXCLUSIVE'|'SHARED'

(1)NONE:不使用密碼檔案登入、不允許遠端使用者用sys登入系統、可以線上修改sys的密碼;

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

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

修改:

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

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

1.3 禁用OS認證

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

1.3.1 windows下

在win下只要把oracle_home/NETWORK/admin/sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (nts)nts改成none或者注釋掉這句話(在前面加上#),就可以屏蔽os功能,要想以sys使用者連上資料庫必須輸入正確的sys口令,或者可以把oracle的安裝使用者從組ora_dba中刪除掉,當然也可以直接把ora_dba這個組也刪除,都可以屏蔽os功能.

如:

SQL> connect /as sysdba

ERROR:

ORA-01031: 許可權不足

SQL> connect sys/aaa as sysdba

ERROR:

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

SQL> connect aaa/bbb as sysdba

ERROR:

ORA-01031: 許可權不足

SQL> connect sys/system as sysdba

已串連。

SQL>

1.3.2  LINUX/UNIX 下

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

注意:

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

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.