溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle的密碼文件及遠程SYSDBA登錄

發(fā)布時間:2020-07-09 23:04:16 來源:網絡 閱讀:3336 作者:hbxztc 欄目:數(shù)據(jù)庫

密碼文件(password file)是一個可選的文件,允許遠程SYSDBA或管理員訪問數(shù)據(jù)庫。

啟動Oracle時,還沒有數(shù)據(jù)庫可以用來驗證密碼。在本地系統(tǒng)上啟動Oracle時,Oracle會利用操作系統(tǒng)來執(zhí)行這種認證。安裝Oracle時,會要求完成完成的人指定管理員“組”。在Unix/Linux上,這個組一般默認為dba,在Windows上默認為OSDBA,不過也可以是平臺上任何合法的組名。這個組很特殊,因為這個組中的任何用戶都可以作為SYSDBA連接Oracle,而無需指定用戶名或密碼。

[root@rhel6 ~]# id mysql
uid=496(mysql) gid=495(mysql) groups=495(mysql),500(oinstall)
[root@rhel6 ~]# su - mysql
-bash-4.1$ export ORACLE_HOME=/u02/app/oracle/product/11.2.4/db1
-bash-4.1$ export ORACLE_SID=orcl
-bash-4.1$ cd $ORACLE_HOME/bin
-bash-4.1$ ./sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 15 21:32:05 2016

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

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: ^C
-bash-4.1$ su
Password: 
[root@rhel6 bin]# usermod -G dba mysql
[root@rhel6 bin]# id mysql
uid=496(mysql) gid=495(mysql) groups=495(mysql),501(dba)
[root@rhel6 bin]# exit
exit
-bash-4.1$ ./sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 15 21:32:36 2016

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

sys@ORCL>show user
USER is "SYS"

現(xiàn)在可以連接數(shù)據(jù)庫做管理工作,或啟動關閉數(shù)據(jù)庫。如果要從另外一臺機器通過網絡完成這個操作會怎么樣呢?下面我使用@連接串來連接:

C:\Users\victor>sqlplus /@orcl as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 21:42:04 2016

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

ERROR:
ORA-01017: invalid username/password; logon denied

在網絡上,對于SYSDBA的操作系統(tǒng)認證不再奏效,即使把很不安全的REMOTE_OS_AUTHENT參數(shù)設置為TRUE也不例外。所以操作系統(tǒng)認證不可行。因此密碼文件應運而生了。

密碼文件保存了一個用戶名和密碼列表,這些用戶名和密碼分別對應于通過網絡遠程認證為SYSDBA的用戶。Oracle必須使用這個文件來認證用戶,而不是數(shù)據(jù)庫中存儲的正常密碼列表。

下面驗證這種情況。首先,設置REMOTE_LOGIN_PASSWORDFILE,有三個值:NONE,意味著沒有密碼文件,不存在“遠程SYSDBA登錄”、SHARED,多個數(shù)據(jù)庫可以使用同樣的密碼文件、EXCLUSIVE,只有一個數(shù)據(jù)庫使用一個給定的密碼文件。這里設置為EXCLUSIVE。

alter system set remote_login_passwordfile=exclusive scope=spfile;

修改這個參數(shù)需要重啟數(shù)據(jù)庫。

使用orapwd創(chuàng)建和填寫這個初始的密碼文件,密碼文件位于$ORACLE_HOME/dbs目錄中。

[oracle@rhel6 dbs]$ which orapwd
/u02/app/oracle/product/11.2.4/db1/bin/orapwd
[oracle@rhel6 dbs]$ orapwd
Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

  where
    file - name of password file (required),
    password - password for SYS will be prompted if not specified at command line,
    entries - maximum number of distinct DBA (optional),
    force - whether to overwrite existing file (optional),
    ignorecase - passwords are case-insensitive (optional),
    nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
    
  There must be no spaces around the equal-to (=) character.
[oracle@rhel6 dbs]$ pwd
/u02/app/oracle/product/11.2.4/db1/dbs
[oracle@rhel6 dbs]$ orapwd file=orapw$ORACLE_SID password=oracle entries=20
[oracle@rhel6 dbs]$ ls -l orapw$ORACLE_SID
-rw-r----- 1 oracle oinstall 3584 Dec 15 21:55 orapworcl

目前該文件中只有一個用戶,也就是用戶SYS,盡管數(shù)據(jù)庫上還有其他SYSDBA賬戶,但它們還不在密碼文件中。不過基于以上設置我們可以作為SYSDBA通過網絡連接Oracle,即使Oracle沒有啟動,并且可以遠程啟動Oracle。

C:\Users\victor>sqlplus sys/oracle@orcl as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:00:24 2016

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

已連接到空閑例程。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  784998400 bytes
Fixed Size                  2257352 bytes
Variable Size             754978360 bytes
Database Buffers           20971520 bytes
Redo Buffers                6791168 bytes
數(shù)據(jù)庫裝載完畢。
數(shù)據(jù)庫已經打開。

注意:如果上邊這一步遇到ORA-12505 "TNS:listener does not currently know of SID given in connect descriptor"說明沒有配置數(shù)據(jù)庫實例的靜態(tài)監(jiān)聽。

創(chuàng)建了密碼文件,那我們能不能看看密碼文件里到底記錄了什么內容呢,會不會把我們的密碼泄漏呢?

密碼文件是一個二進制文件是不能直接查看的,Linux上可以使用strings命令查看

[oracle@rhel6 dbs]$ strings orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2

從輸出可以看出密碼文件中沒有使用明文記錄我們的密碼而是記錄了一些串碼。

其實這個密碼文件還和數(shù)據(jù)庫中的一個視圖v$pwfile_users有一些關系

V$PWFILE_USERS lists all users in the password file, and indicates whether the user has been granted the SYSDBA, SYSOPER, and SYSASM privileges.
USERNAME VARCHAR2(30) Name of the user that is contained in the password file
SYSDBA VARCHAR2(5) Indicates whether the user can connect with SYSDBA privileges (TRUE) or not (FALSE)
SYSOPER VARCHAR2(5) Indicates whether the user can connect with SYSOPER privileges (TRUE) or not (FALSE)
SYSASM VARCHAR2(5) Indicates whether the user can connect with SYSASM privileges (TRUE) or not (FALSE)
sys@ORCL>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
--給用戶zx賦予SYSDBA權限可以看到v$pwfile_users多了一條記錄,而密碼文件orapworcl也多了一行串碼。
sys@ORCL>grant sysdba to zx;

Grant succeeded.

sys@ORCL>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
ZX											   TRUE 	   FALSE	   FALSE

sys@ORCL>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--給用戶zx賦予SYSOPER的權限,可以看到v$pwfile_users的zx行狀態(tài)發(fā)生了變化,但是orapworcl沒有變化
sys@ORCL>grant sysoper to zx;

Grant succeeded.

sys@ORCL>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
ZX											   TRUE 	   TRUE 	   FALSE

sys@ORCL>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--移除密碼文件再移回來,移除密碼文件后v$pwfile_users變?yōu)榭?,移回后v$pwfile_users又有記錄。
sys@ORCL>! mv /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl_orcl

sys@ORCL>select * from v$pwfile_users;

no rows selected

sys@ORCL>! mv /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl_orcl /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl

sys@ORCL>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
ZX											   TRUE 	   TRUE 	   FALSE
--測試zx用戶遠程以SYSDBA登錄
C:\Users\victor>sqlplus zx/zx@orcl as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:34:09 2016

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


連接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user;
USER 為 "SYS"
--回收用戶zx的SYSDBA和SYSOPER權限,v$pwfile_users中的zx記錄行沒有了,密碼文件orapworcl沒有變化
sys@ORCL>revoke sysdba,sysoper from zx;

Revoke succeeded.

sys@ORCL>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE

sys@ORCL>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--再次測試zx用戶遠程以SYSDBA登錄,現(xiàn)在無法登錄
C:\Users\victor>sqlplus zx/zx@orcl as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:35:17 2016

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

ERROR:
ORA-01017: invalid username/password; logon denied


參考:http://www.xifenfei.com/2011/12/vpwfile_users%E5%92%8C%E5%AF%86%E7%A0%81%E6%96%87%E4%BB%B6%E5%85%B3%E7%B3%BB.html

《9i10g11g編程藝術 深入數(shù)據(jù)庫體系結構》

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI