簡述密碼檔案的兩個特性
Oracle密碼檔案Password File是對sysdba和sysoper等高系統許可權使用者密碼進行管理的一個載體。對我們來說,password file是在資料庫之外的一個密碼駐留點。本篇一起來討論一下關於password file的一些特徵和要點。
1、密碼檔案使用者管理
我們選擇Oracle 11g進行試驗。密碼檔案在檔案系統中是一個封閉的二進位制檔案,我們一般是沒有辦法看到其中的資料的。
但是,當Oracle啟動之後,使用檢視v$pwfile_users,我們可以看到當前密碼檔案其中包括的超級使用者。
SQL> conn sys/oracle@ora11gp as sysdba
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as SYS
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------ ------ ------- ------
SYS TRUE TRUE FALSE
特殊許可權使用者名稱稱全部列在其中。注意,在Oracle 11g中,引入了sysasm許可權。在之前的版本中,我們只能看到sysdba和sysoper。
對於sysdba和sysoper的差別,主要體現在sysoper只有對於資料庫一些管理性操作,如啟動關閉資料庫、備份還原等。而sysdba還要包括物件訪問使用許可權上。11g中新加入的sysasm許可權主要是針對ASM和Grid Infrasture元件的管理。
如果我們顯示的進行sysdba和sysoper許可權的賦予,Oracle自動的將使用者的資訊新增到密碼檔案中。如下:
為了更好驗證,我們建立一個名為test的使用者。
SQL> create user test identified by test;
User created
SQL> grant resource, connect to test;
Grant succeeded
給scott和test兩個使用者分別授予sysdba和sysoper許可權。
SQL> grant sysdba to scott;
Grant succeeded
SQL> grant sysoper to test;
Grant succeeded
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------ ------ ------- ------
SYS TRUE TRUE FALSE
SCOTT TRUE FALSE FALSE
TEST FALSE TRUE FALSE
2、sysdba和sysoper使用者登入試驗
如果我們的scott和test兩個使用者已經有了sysdba和sysoper許可權,就意味著兩個人已經可以作為sysdba和sysoper登入。
當我們從遠端系統進行登入的時候。
(遠端)
SQL> conn scott/tiger@ora11gp as sysdba
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as SYS
SQL> show user;
User is "SYS"
SQL> conn test/test@ora11gp as sysoper;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as PUBLIC
SQL> show user
User is "PUBLIC"
這裡,我們發現了一個問題。首先,我們是透過遠端登入的,OS匿名驗證肯定是不能使用的,這裡的密碼驗證一定是使用的。但是,我們登入之後,scott使用者顯示出的卻是sys使用者。而具有sysoper許可權的test使用者,顯示出的卻是public使用者。Public使用者是Oracle內部的一個“偽”使用者,充當虛擬的角色。
那麼,我們如果採用本地登入,效果是否相同呢?我們試驗中首先禁用掉本地OS驗證機制。
--已經禁用掉了OS驗證;
[oracle@bsplinux admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NONE)
[oracle@bsplinux admin]$
oracle@bsplinux admin]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Mon Sep 24 22:17:22 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
--匿名登入取消;
SQL> conn / as sysdba
ERROR:
ORA-01031: insufficient privileges
--As sysdba
SQL> conn scott/tiger as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL>
SQL> conn scott/tiger as sysoper;
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
SQL> conn test/test as sysdba
ERROR:
ORA-01031: insufficient privileges
--As sysoper
SQL> conn test/test as sysoper
Connected.
SQL> show user
USER is "PUBLIC"
SQL>
效果相同。所以,我們可以得到結論:被賦予sysdba和sysoper許可權的使用者,是可以以as sysxxx的語句格式進行登入。但是登入之後,sysdba使用者被替換為sys,而sysoper使用者被替換為public。
3、密碼檔案重置
密碼檔案重置就是使用Oracle的orapwd工具重新建立一個全新的密碼檔案。但是,建立密碼檔案的時候,其中只會包括sys使用者的資訊,其他所有sysdba、sysoper和sysasm許可權的使用者不會被新增到檔案中。並且進一步的是,這些使用者的許可權被剝奪。
Oracle密碼檔案位置遵守Oracle OFA規範。在windows環境下,該檔案位於$ORACLE_HOME下的database資料夾。而在Linux/Unix環境下,位於dbs資料夾。
[oracle@bsplinux dbs]$ pwd
/u01/app/oracle/dbs
[oracle@bsplinux dbs]$ ls -l
total 9700
-rw-rw---- 1 oracle oinstall 1544 May 22 17:16 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 May 22 17:19 hc_ora11g.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 24 May 22 19:32 lkORA11G
-rw-r----- 1 oracle oinstall 2048 Sep 24 22:12 orapwora11g
drwx------ 2 oracle oinstall 4096 May 22 17:16 peshm_DBUA0_0
drwx------ 2 oracle oinstall 4096 May 22 17:19 peshm_ora11g_0
-rw-r----- 1 oracle oinstall 9846784 Sep 24 19:45 snapcf_ora11g.f
-rw-r----- 1 oracle oinstall 3584 Sep 24 22:14 spfileora11g.ora
我們可以使用orapwd工具重新生成密碼檔案。
[oracle@bsplinux dbs]$ orapwd file=orapwora11g password=oracle entries=5
[oracle@bsplinux dbs]$ ls -l
total 9692
-rw-rw---- 1 oracle oinstall 1544 May 22 17:16 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 May 22 17:19 hc_ora11g.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 24 May 22 19:32 lkORA11G
-rw-r----- 1 oracle oinstall 2048 Sep 24 22:21 orapwora11g
drwx------ 2 oracle oinstall 4096 May 22 17:16 peshm_DBUA0_0
drwx------ 2 oracle oinstall 4096 May 22 17:19 peshm_ora11g_0
對於新生成的密碼檔案orapwora11g,我們可以檢視一下其中資訊。
SQL> conn sys/oracle@ora11gp as sysdba
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as SYS
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------ ------ ------- ------
SYS TRUE TRUE FALSE
只有一條sys的使用者資訊。scott和test使用者的sysdba和sysoper許可權被剝奪。
SQL> conn scott/tiger@ora11gp as sysdba
ERROR:
ORA-01031: insufficient privileges
SQL> conn test/test@ora11gp as sysoper
ERROR:
ORA-01031: insufficient privileges
4、密碼修改副效應
注意:在orapwd命令引數中,包括一個password引數,要求輸入密碼。這個引數存在一個潛在效果就是修改sys使用者密碼。
當前sys使用者密碼為oracle。
SQL> conn sys/oracle@ora11gp as sysdba
已連線。
SQL>
重新生成密碼檔案。
[oracle@bsplinux dbs]$ orapwd file=orapwora11g password=sys entries=5
[oracle@bsplinux dbs]$ ls -l
total 9692
-rw-rw---- 1 oracle oinstall 1544 May 22 17:16 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 May 22 17:19 hc_ora11g.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 24 May 22 19:32 lkORA11G
-rw-r----- 1 oracle oinstall 2048 Sep 24 22:25 orapwora11g
drwx------ 2 oracle oinstall 4096 May 22 17:16 peshm_DBUA0_0
drwx------ 2 oracle oinstall 4096 May 22 17:19 peshm_ora11g_0
-rw-r----- 1 oracle oinstall 9846784 Sep 24 19:45 snapcf_ora11g.f
-rw-r----- 1 oracle oinstall 3584 Sep 24 22:14 spfileora11g.ora
SQL> conn sys/oracle@ora11gp as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再連線到 ORACLE。
SQL> conn sys/sys@ora11gp as sysdba
已連線。
SQL>
使用者sys的密碼被修改。
使用密碼檔案重新生成的方法來修改sys使用者帳號,筆者認為存在很大的安全隱患。如果伺服器OS使用者可以自行orapwd程式,那麼也就是控制了sys使用者帳號。
另一方面,使用密碼檔案來修改稿許可權使用者帳號,也是一種策略手段。在MOS中,就有介紹使用密碼檔案重置來修改ASM例項管理員密碼的方法。
5、結論
Oracle密碼檔案是Oracle安全的一道重要防線。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-745065/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 密碼學簡述密碼學
- Oracle 12c的DG自動同步密碼檔案--ASM 新特性:共享密碼檔案Oracle密碼ASM
- 新特性 Hook 簡述Hook
- Oracle 密碼檔案Oracle密碼
- Oracle:ASM & 密碼檔案OracleASM密碼
- 攻防世界-告述你個秘密(鍵盤密碼)密碼
- SpringBoot專案配置檔案中密碼的加密Spring Boot密碼加密
- 自己寫的一個 java 解壓 rar zip 帶密碼 檔案Java密碼
- MongoDB與MMAPV1相關的資料檔案簡述MongoDB
- 管理(002):建立密碼檔案示例密碼
- 管理(005):密碼檔案設定密碼
- PDF檔案有限制密碼,該如何編輯檔案?密碼
- Golang 超大檔案讀取的兩個方案Golang
- 如何給PDF檔案設定密碼?密碼
- 1.6.5. 使用密碼檔案認證密碼
- 區域網訪問共享檔案需要密碼怎麼辦?取消區域網共享檔案訪問密碼的方法密碼
- 替換掉的檔案怎麼恢復,兩個方法還原檔案
- 12c複製 RAC ASM中的密碼檔案到檔案系統ASM密碼
- Linux給檔案隔兩個字元插入-Linux字元
- python 兩個檔案內容重疊部分Python
- 簡述grub啟動載入程式和製作kickstart檔案
- 1.7.7. 檢視密碼檔案成員密碼
- Linux基礎命令---htpasswd建立密碼檔案Linux密碼
- MySQL兩階段提交過程原理簡述MySql
- excelwin10版檔案密碼忘了怎麼辦_excelwin10版檔案密碼忘了如何開啟ExcelWin10密碼
- PHP 計算兩個檔案的相對路徑PHP
- ASM有自己的引數、密碼、alert、監聽檔案ASM密碼
- Shell指令碼知識簡述指令碼
- Linux基礎命令---檢查密碼檔案pwckLinux密碼
- 1.7.8. 刪除資料庫密碼檔案資料庫密碼
- Linux求兩個文字檔案的交集、差集、並集Linux
- 比較兩個檔案,求出不同的內容,A-B
- 如何找出兩個文字檔案中有相同欄位的行
- Vue 兩個欄位聯合校驗典型例子--修改密碼Vue密碼
- iOS釋出證書.p12檔案無密碼解決辦法及匯出帶密碼的新.p12檔案方法iOS密碼
- 一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置Spring Boot
- Oracle 12c 兩個新特性Oracle
- 1.7.3. 禁用和共享資料庫密碼檔案資料庫密碼
- 1.7.2. 使用ORAPWD建立資料庫密碼檔案資料庫密碼