通通透透分析Oracle的登陸認證方式(10g)
a.歡迎對本帖補充、建議、更正
b.測試環境rhel5.4+Ora10.2.0.1.0
c.為節省篇幅,部分輸出結果做了精簡
第01部分 伺服器端OS認證(預設啟用)
01.1 以安裝Oracle的使用者登入OS
[size=9.5pt]不論輸入什麼使用者,只要以[size=9.5pt]sysdba[size=9.5pt]許可權連線資料庫,都可以連線上,並且連線使用者是[size=9.5pt]sys[size=9.5pt]。
[size=9.5pt]有時候,如果忘記了資料庫的密碼,而又想登入資料庫,可以通過這種方式,前提是在資料庫伺服器上。
SQL> connect / as sysdba
Connected.
SQL> connect sys/aaa as sysdba
Connected.
SQL> connect sys/bbb as sysdba
Connected.
SQL> connect aaa/bbb as sysdba
Connected. //[size=9.5pt]哪怕這個使用者如[size=9.5pt]aaa[size=9.5pt]在資料庫中根本不存在
SQL> show user
USER is "SYS"
SQL> alter user sys identified by install;
User altered.
SQL> connect sys/install@192.168.188.128:1521/orcl
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Warning: You are no longer connected to ORACLE.
SQL> connect sys/install@192.168.188.128:1521/orcl as sysdba
Connected.
SQL> show user
USER is "SYS"
01.2 以非安裝oracle使用者登入OS
# su – oracle
$ sqlplus / as sysdba
SQL> show parameter auth
NAME TYPE VALUE
---------------- ---------- -------
os_authent_prefix string ops$
remote_os_authent boolean FALSE
SQL> create user ops$zcs1 identified by oracle;
User created.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
$exit
# useradd -g oinstall -G dba zcs1
# echo oracle|passwd --stdin zcs1
# su - zcs1
$ export ORACLE_SID=orcl
$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
SQL>
01.3 遮蔽OS認證(以linux為例)
OS 認證有一定安全隱患,可以把相關係統使用者刪除,也可以修改sqlnet.ora檔案。
在刪除密碼檔案後,若想要以管理員身份連入資料庫的話,則必須使用作業系統驗證的方法進行登入。
$ cd $ORACLE_HOME/network/admin;ls sqlnet.ora
ls: sqlnet.ora: No such file or directory
$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
$ sqlplus / as sysdba //提示,需輸入正常的使用者名稱和密碼
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
$cd $ORACLE_HOME/network/admin
$mv sqlnet.ora sqlnet.ora.bak //重新啟動用OS認證
********************************************************************************************
第02部分 密碼檔案認證
在Oracle中,使用者如果要以特權使用者身份(INTERNAL/SYSDBA/SYSOPER)登入Oracle資料庫可以有兩種身份驗證的方法:
1、使用與OS整合的身份驗證OS認證意思把登入資料庫的使用者和口令校驗放在了OS一級。
當sys密碼不記得可以使用OS系統身份認證登陸到sqlplus,再使用alter user修改密碼。
2、使用Oracle資料庫的password file進行身份驗證由於僅被授予SYSOPER/SYSDBA系統許可權的使用者才存在於密碼檔案中,由此,向密碼檔案中增加或刪除某一使用者,實際上也就是對某一使用者授予或收回SYSOPER/SYSDBA系統許可權。
3、建立密碼檔案的命令不管是在建立例項時自動建立的密碼檔案,還是使用手工建立的密碼檔案,都只包含INTERNAL/SYS使用者的資訊;
orapwd file=orapworcl password=oracle force=y
orapwd file=>
password=< sys使用者的密碼>
entries=
force=02.1 建立密碼檔案
[size=9.5pt]在實際開發中,要把作業系統驗證給取消掉,那以後就會採用密碼驗證了。但是假如我們把密碼忘記了,又如何解決呢:重新生成密碼檔案即可。
一、使用orapwd建立,修改密碼檔案
$ cd $ORACLE_HOME/network/admin
$ mv sqlnet.ora.bak sqlnet.ora
$ strings sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NONE)
$ sqlplus / as sysdba
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
$ cd $ORACLE_HOME/dbs
$ ls orapw*
orapworcl
$ strings orapworcl|grep -i test
TEST
$ orapwd file=orapworcl password=redhat //重建密碼檔案修改密碼
OPW-00005: File with same name exists - please delete or rename
$ orapwd file=orapworcl password=oracle force=y //改密碼
$ strings orapworcl|grep -i test
$ sqlplus sys/oracle as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
二、擴充套件密碼檔案的使用者數量
當向密碼檔案新增的帳號數目超過建立密碼檔案時所定的限制時,為擴充套件密碼檔案的使用者數限制,需重建密碼檔案。
$ orapwd file=orapworcl password=redhat entries=1
$ strings $ORACLE_HOME/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
F7AC0C5E9C3C37AB
E100B964899CDDDF
//8i之前用internal使用者來執行資料庫的啟動和關閉以及create database等操作,為保持使用者習慣在8i中依舊保留了internal使用者和svrmgrl,但已完全可以不使用svrmgrl工具和 internal使用者了。
SQL> begin
for i in 1..6 loop
execute immediate 'create user u'||i||' identified by u'||i||'';
end loop;
end;
/
PL/SQL procedure successfully completed.
SQL> begin
for i in 1..6 loop
execute immediate 'grant sysdba to u'||i||'';
end loop;
end;
/
begin
*
ERROR at line 1:
ORA-01996: GRANT failed: password file '' is full
ORA-06512: at line 3
SQL> host strings $ORACLE_HOME/dbs/orapworcl
]\[Z //再次檢視orapworcl發現多出了行,該二進位制檔案按矩陣計算可存放多少
ORACLE Remote Password file
INTERNAL
F7AC0C5E9C3C37AB
E100B964899CDDDF
3E81B724A296E296
668509DF9DD36B43
9CE6AF1E3F609FFC
7E19965085C9ED47
三、檢視密碼檔案放了多少個sysoper/sysdba使用者
可以通過查詢檢視V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統許可權的使用者的資訊,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此使用者是否擁有相應的許可權。這些使用者也就是相應地存在於密碼檔案中的成員。
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
zcs FALSE TRUE
U1 TRUE FALSE
U2 TRUE FALSE
U3 TRUE FALSE
02.2 使用密碼認證
一、建立密碼檔案
$ cd /u01/app/oracle/product/10.2.0/db_1/dbs
$ orapwd file=orapworcl password=redhat force=y
$ strings orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
二、開啟密碼檔案認證cd $ORACLE_HOME/network/admin; //開啟密碼檔案認證
echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
三、通過授權sysdba,密碼檔案中增加scott的資訊REMOTE_LOGIN_PASSWORDFILE初始化引數檔案中,此引數控制著密碼檔案的使用及其狀態 (NONE:不使用密碼檔案,特權使用者的登入通過OS進行身份驗證) 。
[size=9.5pt]1[size=9.5pt]、[size=9.5pt]SHARED([size=9.5pt]密碼檔案可多例項使用[size=9.5pt],[size=9.5pt] [size=9.5pt]僅[size=9.5pt]INTERNAL[size=9.5pt]/[size=9.5pt]SYS[size=9.5pt]能特權登陸[size=9.5pt])shared口令檔案不能被編輯。即不能向shared口令檔案增加使用者。如果要增加使用者或修改sysdba、sysoper使用者的密碼,需要設定REMOTE_LOGIN_PASSWORDFILE引數為exclusive然後再設定為shared。
SQL>alter system set remote_login_passwordfile=shared scope=spfile;
System altered. //改為shared
SQL>startup force;
ORACLE instance started. //為了使修改生效,重啟資料庫
SQL>alter user sys identified by system;
ERROR at line 1: //修改sys使用者的口令
ORA-28046: Password change for SYS disallowed
SQL>grant sysdba to scott;
ERROR at line 1: //為scott使用者授予sysdba許可權
ORA-01999: password file cannot be updated in SHARED mode
[size=9.5pt]2[size=9.5pt]、[size=9.5pt]EXCLUSIVE([size=9.5pt]只有一個資料庫例項可以使用此密碼檔案[size=9.5pt])只有在此設定下的密碼檔案可以包含有除INTERNAL/SYS以外的使用者資訊。
SQL>alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered. //改為exclusive
SQL> show parameter remote_login_passwordfile
remote_login_passwordfile EXCLUSIVE
SQL>startup force;
ORACLE instance started. // 為了使引數生效,重啟資料庫
SQL>alter user sys identified by system;
User altered. // 修改sys使用者的密碼
SQL>grant sysdba to scott;
Grant succeeded. //為scott使用者授予sysdba許可權
SQL> host strings orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
SCOTT
7AA1A84E31ED7771
四、禁用OS認證$ cd $ORACLE_HOME/network/admin
$ ls sqlnet.ora
ls: sqlnet.ora: No such file or directory
$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
$ sqlplus / as sysdba //提示,需輸入正常的使用者名稱和密碼
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
五、登陸後顯示的賬戶資訊是sys,而非scott
$ sqlplus scott/tiger as sysdba
SQL> show user
USER is "SYS"
******************************************************************************************************************************
第03部分 使用字典認證(非DBA)
只有在資料庫run狀態下普通使用者連線上資料庫時通過儲存在字典表中的使用者口令來進行鑑權認證。
一、建立使用者並授授予SYSDBA許可權$ sqlplus / as sysdba
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
SQL> select INSTANCE_NAME,STATUS from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl OPEN
SQL> create user ZCS identified by ZCS;
User created.
SQL>select USERNAME,PASSWORD from dba_users where USERNAME='ZCS';
USERNAME PASSWORD
------------------------- ---------------------
ZCS 8C4FBF9DAA31F429
SQL> grant create session to zcs;
Grant succeeded.
二、禁用密碼認證並刪除密碼檔案SQL> show parameter remote_login_passwordfile
remote_login_passwordfile EXCLUSIVE(預設)
SQL>alter system set remote_login_passwordfile=NONE scope=spfile;
System altered. //禁用密碼認證
SQL>startup force;
ORACLE instance started. //為了使修改生效,重啟資料庫
SQL>host
$cd $ORACLE_HOME/dbs/
$mv orapworcl orapworcl.bak
三、禁用OS認證(使用者和密碼完成正確才能登入)客戶端網路配置檔案sqlnet.ora中的引數用來決定是採用OS層面的鑑權認證還是密碼檔案的鑑權認證。
$ cd $ORACLE_HOME/network/admin;ls sqlnet.ora
ls: sqlnet.ora: No such file or directory
$ echo 'SQLNET.AUTHENTICATION_SERVICES=(NONE)' > sqlnet.ora
四、使用資料字典認證登陸$exit
exit
SQL> conn zcs/zcs
Connected.//預設可以使用OS認證
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/210154/viewspace-756891/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 登陸認證框架:SpringSecurity框架SpringGse
- 中介軟體---登陸認證授權---Shiro
- 登陸驗證
- 盤點Mysql的登陸方式MySql
- 遊戲登陸主機的認證測試該怎麼做?遊戲
- 通通透透看無伺服器計算:由來、場景和問題伺服器
- 帝國CMS忘記後臺登陸認證碼怎麼辦?
- 系統登入認證流程對比(cookie方式與jwt)CookieJWT
- 【認證與授權】2、基於session的認證方式Session
- 一文徹底搞定Spring Security 認證,實現登陸登出功能Spring
- Oracle 認證下載Oracle
- 10G密碼版本使用者無法登陸問題密碼
- Kubernetes客戶端認證——基於CA證書的雙向認證方式客戶端
- ETL認證申請方式
- Spring boot 入門(四):整合 Shiro 實現登陸認證和許可權管理Spring Boot
- 認證系統之登入認證系統的進階使用 (二)
- passport API 認證 -- 多表登入PassportAPI
- 網站安全滲透測試檢測認證登入分析網站
- sequence:從認識到會使用,今兒給你講的透透的
- 酒店賓館無線上網認證手機認證方式
- SpringSceurity(5)---簡訊驗證碼登陸功能Spring
- SSH安全登陸原理:密碼登陸與公鑰登陸密碼
- gRPC 認證的多種方式實踐(五)RPC
- Flask Session 登入認證模組FlaskSession
- JWT登入認證-專案BotBattleJWTBAT
- Redis使用認證密碼登入Redis密碼
- oracle 10g flashback databaseOracle 10gDatabase
- 深透醫療AI影像產品獲FDA認證,SubtlePET將正式登陸美國市場AI
- ssh方式登入雲伺服器時設定別名登陸伺服器
- Jenkins API使用者認證方式JenkinsAPI
- 驗證Oracle 10g線上整理碎片索引是否失效過程Oracle 10g索引
- PbootCms後臺登陸不顯示驗證碼boot
- 9.Django之登陸註冊驗證登出Django
- 圖解Jwt和shiro認證方式的區別圖解JWT
- 易優cms網站後臺登陸驗證碼錯誤,如何不使用驗證碼登陸?或者如何修復?網站
- 實戰模擬│JWT 登入認證JWT
- JWT實現登入認證例項JWT
- se://error/ Oracle 19c EM Exporess無法登陸ErrorOracle
- Oracle 10g 下載地址Oracle 10g