小議SQLNET.AUTHENTICATION_SERVICES
一直以來,我記住的一個知識點就是:SQLNET.AUTHENTICATION_SERVICES=(NTS)是使用OS認證的必須條件之一。
今天一個偶然的機會,才知道這個結論是不完全準確的。
在本文的測試中,remote_login_passwordfile的值都為EXCLUSIVE,相關使用者所屬組也設定正確。
先看windows下的測試:
--設定為NTS,OS驗證成功
E:oracleora92in>cat .. etworkadminSQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES= (NTS)
E:oracleora92in>sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 8月 15 22:34:56 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
連線到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
sys@ORACLE9I>
--下面把SQLNET.ORA的內容註釋掉,OS驗證成功
E:oracleora92in>cat .. etworkadminSQLNET.ORA
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
再次登入:
E:oracleora92in>sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 8月 15 22:36:09 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
--設定為 NONE,OS驗證失敗
E:oracleora92in>cat .. etworkadminSQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES= (NONE)
E:oracleora92in>sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 8月 15 22:50:33 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
--設定為ALL,OS驗證成功
E:oracleora92in>cat .. etworkadminSQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES= (ALL)
E:oracleora92in>sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 8月 15 22:51:21 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
連線到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
sys@ORACLE9I>
登入失敗,說明當前設定不允許作業系統認證。
這個例子也說明了:在windows下,SQLNET.AUTHENTICATION_SERVICES必須設定為NTS或者ALL才能使用OS認證。
接著再看看在linux下的情況:
--設定為NTS,OS驗證失敗
[oracle@primary admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
[oracle@primary admin]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Aug 15 23:08:53 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-01031: insufficient privileges
--註釋掉,相當於什麼都不設定,OS驗證成功
[oracle@primary admin]$ cat sqlnet.ora
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
[oracle@primary admin]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Aug 15 23:06:17 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning and Data Mining options
SQL>
--設定為NONE,OS驗證失敗
[oracle@primary admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NONE)
[oracle@primary admin]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Aug 15 23:07:07 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-01031: insufficient privileges
--隨便設定一個值,OS驗證失敗
[oracle@primary admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (aaa)
[oracle@primary admin]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Aug 15 23:14:45 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-01031: insufficient privileges
--設定為ALL,OS驗證成功
[oracle@primary admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (ALL)
[oracle@primary admin]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Aug 15 23:07:54 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning and Data Mining options
SQL>
從以上測試知道:在linux下,在SQLNET.AUTHENTICATION_SERVICES的值設定為ALL,或者不設定的情況下,OS驗證才能成功。
從測試可以看出,windows和linux下要實現OS驗證,SQLNET.AUTHENTICATION_SERVICES的設定要求是不一樣的,甚至是相反的,為什麼呢?
我們看看ORACLE對這個設定是怎麼解釋的:
SQLNET.AUTHENTICATION_SERVICES
Purpose
Use the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.
Default
None
Values
Authentication Methods Available with Oracle Net Services:
* none for no authentication methods. A valid username and password can be used to access the database.
* all for all authentication methods
* nts for Windows NT native authentication
Windows NT native authentication
An authentication method that enables a client single login access to a Windows NT server and a database running on the server.
從oracle的解釋可以知道,SQLNET.AUTHENTICATION_SERVICES=(NTS)是WINDOWS系統專用的,對linux/UNIX是不適用的。
最後做一個簡單的總結:
1、在windows下,SQLNET.AUTHENTICATION_SERVICES必須設定為NTS或者ALL才能使用OS認證;不設定或者設定為其他任何值都不能使用OS認證。
2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值設定為ALL,或者不設定的情況下,OS驗證才能成功;設定為其他任何值都不能使用OS認證。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63849/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小議JS原型鏈、繼承JS原型繼承
- 小議Linux安全防護(二)Linux
- 小議Linux安全防護(一)Linux
- PMP常見會議小結
- 小組第一次會議
- 第二次小組站立會議
- 第三次小組站立會議
- Flutter小知識--外掛開發建議Flutter
- 小議新版GB9706.1-2020的基本效能
- 微信小程式--關於加快小程式開發的幾個小建議微信小程式
- 小議Python3的原生協程機制Python
- 分享幾個Java面試小技巧,建議收藏!Java面試
- Android開發一點小技巧和建議獻上Android
- Android JNI&NDK程式設計小結及建議Android程式設計
- 小馬識途:百度熱議如何優化?百度熱議優化多少錢?優化
- mpvue開發音訊類小程式踩坑和建議Vue音訊
- 小學生都能讀懂的網路協議之:WebSocket協議Web
- Java gc(垃圾回收機制)小結,以及Android優化建議JavaGCAndroid優化
- 小議“悲觀鎖和樂觀鎖”的原理、場景、示例
- 不建議小老闆轉型做短視訊和直播
- 2019遊鼎獎小程式釋出,移動端助力引爆會議!
- javascript 設計模式(修言小冊乾貨,長文建議收藏)JavaScript設計模式
- CMCA&CAFI:小額貸款公司的現狀和政府建議
- MySQL資料庫優化:縮小資料的五點建議VCMySql資料庫優化
- “威小來”VR虛擬會議室 助力企業數字化轉型VR
- Raft協議和ZAB協議Raft協議
- Gossip協議也叫Epidemic協議(流行病協議)Go協議IDE
- 萬豪CEO將在美國參議院資料洩密小組面前作證
- 透過《古劍奇譚三》,小議國產單機遊戲市場現狀遊戲
- Go語言中json序列化的一個小坑,建議多留意一下GoJSON
- 頁面連結跳轉--指定協議,半協議,無協議協議
- 協議協議
- 淺談WebSocket協議、WS協議和WSS協議原理及關係Web協議
- 會議工具分享 | 會議檔案快速分發,會議紀要快速推送
- [需求建議]外掛建議:建議出一個時間軸外掛
- Gossip協議和Grpc協議的區別Go協議RPC
- 系列TCP/IP協議-TCP協議概述(011)TCP協議
- 二進位制協議 VS 文字協議協議