關於ORACLE作業系統認證和ORAPWD密碼檔案認證SYSDBA許可權

gaopengtttt發表於2014-09-01

首先注意如下文件說明:
   Operating system authentication takes precedence over password file authentication. If you meet the requirements for operating system authentication, then even if you use a
password file, you will be authenticated by operating system authentication.
   On most operating systems, authentication for database administrators involves placing the operating system username of the
database administrator in a special group, generically referred to as OSDBA. Users in that group are granted SYSDBA privileges. A similar group, OSOPER, is used to
grant SYSOPERprivileges to users.
   Operating system authentication takes precedence over password file authentication. Specifically, if you are a member of the OSDBA or OSOPER group for the operating system, and you connect as SYSDBA or SYSOPER,you will be connected with associated administrative privileges regardless of the username/passwordthat you specify.If you are not in the OSDBA or OSOPER groups, and you are not in the password file, then attempting to connect as SYSDBA or as  SYSOPER fails
  其中有一個重要的檔案ORAPWD檔案,文件說明如果使用者屬於OSDBA,典型我們建立ORACLE使用者的時候一般
  都會將其設定為DBA組,這個時候即使沒有ORAPWD檔案,實際上ORACLE使用者也能夠登陸到資料庫,因為預設
  的OSDBA就賦予了SYSDBA許可權,而如果一個使用者不屬於OSDBA(DBA組)的話那麼可以使用我們的密碼檔案
  ORAPWD檔案進行驗證,典型比如遠端認證,或者一個不屬於DBA組的使用者。測試如下:
  首先確定你的LISTENER有靜態認證。
  Service "test" has 1 instance(s).
  Instance "ora11g", status UNKNOWN, has 1 handler(s) for this service...
  The command completed successfully
  然後關閉資料庫srvctl stop database -d ora11g,或者直接SHUTDOWN IMMEDIATE。
  這個時候我們透過遠端使用ORAPWD認證
  SQL>  connect sys/gelc123@ora11g as sysdba
  Connected to an idle instance.
  如果我們刪除ORAOWD檔案如何?
  [oracle@tasm dbs]$ mv orapwora11g orapwora11gbak
  再次連線
  SQL>  connect sys/gelc123@ora11g as sysdba
ERROR:
ORA-01031: insufficient privileges


Warning: You are no longer connected to ORACLE.

  同理我們建立一個非DBA組使用者
  useradd lll
  su - lll
  連線
  [lll@tasm ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 15 09:07:44 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

ERROR:
ORA-01031: insufficient privileges


Enter user-name:
顯然此使用者不屬於DBA組不能使用作業系統認證,如果我們嘗試使用ORAPWD檔案認證如何?
[lll@tasm ~]$ sqlplus sys/gelc123 as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 15 09:10:43 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

ERROR:
ORA-01031: insufficient privileges


Enter user-name:

同樣不行,因為我們剛剛MV了ORAPWD檔案,如果我們恢復如何?
[root@tasm ~]# su - lll
[lll@tasm ~]$ sqlplus sys/gelc123 as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 15 09:10:07 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> exit  
可見可以連線,這個使用者雖然不屬於DBA組但是ORAPWD是可以認證的。
最後如果建立一個DBA使用者當然是可以連線的,因為他屬於DBA組自然就有SYSDBA許可權。
[kkk@tasm ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 15 09:13:11 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to an idle instance.

SQL>
所以總結一下:
1、作業系統認證透過作業系統組的方式實現。
2、如果沒有屬於DBA組,可以使用ORAPWD檔案進行認證。
3、如果一個使用者在ORAPWD檔案中和DBA組,那麼作業系統認證優先。
4、注意remote_login_passwordfile的設定 見http://blog.itpub.net/7728585/viewspace-1262106/。
5、任何以AS SYSDBA許可權登陸的使用者均為SYSDBA許可權使用者
6、如果使用者不在DBA組和ORAPWD檔案中AS SYSDBA登陸將會報錯。

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

相關文章