【password】操作系统认证和口令文件及两个相关的参数.
2013-03-13 15:12
387 查看
【概要】讨论操作系统认证和口令文件认证及有关的两个参数:
SQLNET.AUTHENTICATION_SERVICES,REMOTE_LOGIN_PASSWORDFILE
【环境】rhce5.0+oracle10g.r2
【内容】
操作系统认证:
我们在本机以sysdba用户登陆数据时,常使用如下命令:
[oracle@secdb1~]$sqlplus/assysdba
SQLNET.AUTHENTICATION_SERVICES=(ALL)
对Linux系统,支持OS认证和口令文件认证。
对Windows系统,实际实验是不支持此参数,验证失败。
SQLNET.AUTHENTICATION_SERVICES=(NTS)
此设置值仅用于WindowsNT系统,此设置同时支持OS认证和口令文件认证,只有在设置了(NTS)值之后运行在Windows系统上的Oracle才支持OS认证。
SQLNET.AUTHENTICATION_SERVICES=(NONE)
此设置值在Windows和Linux是作用一样的,指定Oracle只使用口令文件认证。
不设置此参数或SQLNET.AUTHENTICATION_SERVICES=
对Linux系统,默认支持OS认证和口令文件认证。
对Windows系统,默认只支持口令文件认证,不支持OS认证。
此参数在linux下存在于$ORACLE_HOME/network/admin/sqlnet.ora中,默认没有此文件,可以手动添加。
(虽然,此参数可以禁用操作系统认证,但是此参数可以再操作系统上任意改动,我们依然无法彻底有效地防止可以登陆到系统的人员对数据库的访问)
口令文件:
远程客户端登陆数据时如果以ASSYSDBA的身份登陆,需要使用外部的口令文件,口令文件的使用受参数REMOTE_LOGIN_PASSWORDFILE={NONE|SHARED}的控制。
REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令文件
REMOTE_LOGIN_PASSWORDFILE=(SHARED):一个或多个数据库可以共享使用一个密码文件。
补充:
(一)在服务器端,如果我们禁用了操作系统认证,此时以SYSDBA登陆数据库就需要使用外部密码文件:
[oracle@secdb1admin]$sqlplus/assysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar13
Copyright(c)1982,2005,Oracle.Allrightsreserve
ERROR:
ORA-01031:insufficientprivileges
使用密码文件:
[oracle@secdb1admin]$sqlplussys/oracleassysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar13Copyright(c)1982,2005,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptions
如果我们同时通过修改参数禁用了密码文件:
SYS@PROD>showparameterremote_login_passwordfile;
NAMETYPEVALUE
--------------------------------------------remote_login_passwordfilestringEXCLUSIVE
SYS@PROD>altersystemsetremote_login_passwordfile=nonescope=spfile;
Systemaltered.
SYS@PROD>shutdownimmediate;
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SYS@PROD>startup
ORA-01031:insufficientprivileges
可以看到,此时因为无法使用外部的口令文件,我们已经无法重新启动数据库了。此时,只好改回操作系统认证登陆数据库,然后将此参数改回。
SQLNET.AUTHENTICATION_SERVICES=(all)
[oracle@secdb1admin]$sqlplus/assysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1313:58:312013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
Connectedtoanidleinstance.
SYS@PROD>startup
ORACLEinstancestarted.
TotalSystemGlobalArea314572800bytes
FixedSize1219184bytes
VariableSize92276112bytes
DatabaseBuffers218103808bytes
RedoBuffers2973696bytes
Databasemounted.
Databaseopened.
SYS@PROD>altersystemsetremote_login_passwordfile=exclusivescope=spfile;
Systemaltered.
重启使参数生效。
到此,我们可以清楚的看到了口令文件认证和操作系统认证的登陆方式。接下来,我们在来从客户端的角度更清晰的解析一下口令文件。
(二)在客户端,我们可以如下命令登陆数据库(注意:此时登陆机器是secdb2,上面的实验环境是secdb1机器):
[oracle@secdb2admin]$sqlplussys/oracle@PRODassysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1314:24:072013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
Connectedtoanidleinstance.
SYS@PROD>
此时使用了口令文件,如果在服务器端我们把口令文件禁用:
SYS@PROD>altersystemsetremote_login_passwordfile=nonescope=spfile;
Systemaltered.
重启使生效
此时客户端再来连接PROD数据库:
[oracle@secdb2admin]$sqlplussys/oracle@PRODassysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1314:30:342013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
ERROR:
ORA-01017:invalidusername/password;logondenied
无法连接到PROD数据库
此时再一次清楚的看到了口令文件的作用,以及如何对其进行禁用管理。
Ballontt
2013/3/13
---end---
SQLNET.AUTHENTICATION_SERVICES,REMOTE_LOGIN_PASSWORDFILE
【环境】rhce5.0+oracle10g.r2
【内容】
操作系统认证:
我们在本机以sysdba用户登陆数据时,常使用如下命令:
[oracle@secdb1~]$sqlplus/assysdba
这条命令使用了操作系统认证的方式进行了登陆,我们不需要使用任何用户名和密码便进行了成功登陆,任何可以登陆到操作系统的人都可以轻易进入以管理员的身份进入数据库,出于安全的考虑,我想禁用[操作系统认证]。此时,可以通过参数SQLNET.AUTHENTICATION_SERVICES进行设置:
SQLNET.AUTHENTICATION_SERVICES=(ALL)
对Linux系统,支持OS认证和口令文件认证。
对Windows系统,实际实验是不支持此参数,验证失败。
SQLNET.AUTHENTICATION_SERVICES=(NTS)
此设置值仅用于WindowsNT系统,此设置同时支持OS认证和口令文件认证,只有在设置了(NTS)值之后运行在Windows系统上的Oracle才支持OS认证。
SQLNET.AUTHENTICATION_SERVICES=(NONE)
此设置值在Windows和Linux是作用一样的,指定Oracle只使用口令文件认证。
不设置此参数或SQLNET.AUTHENTICATION_SERVICES=
对Linux系统,默认支持OS认证和口令文件认证。
对Windows系统,默认只支持口令文件认证,不支持OS认证。
此参数在linux下存在于$ORACLE_HOME/network/admin/sqlnet.ora中,默认没有此文件,可以手动添加。
[oracle@secdb1admin]$pwd
/u01/app/oracle/product/10.2.0/db_1/network/admin
[oracle@secdb1admin]$visqlnet.ora
添加如下参数:
SQLNET.AUTHENTICATION_SERVICES=(none)
此时,我们在尝试使用操作系统认证登陆:
[oracle@secdb1admin]$exportORACLE_SID=PROD
[oracle@secdb1admin]$sqlplus/assysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1313:12:092013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
ERROR:
ORA-01031:insufficientprivileges
显然无法正常登陆
我们尝试将此参数改为all
SQLNET.AUTHENTICATION_SERVICES=(all)
再次尝试以系统认证的方式登陆
oracle@secdb1admin]$exportORACLE_SID=PROD
[oracle@secdb1admin]$sqlplus/assysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1313:13:072013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptions
SYS@PROD>
显然可以成功登陆
(虽然,此参数可以禁用操作系统认证,但是此参数可以再操作系统上任意改动,我们依然无法彻底有效地防止可以登陆到系统的人员对数据库的访问)
口令文件:
远程客户端登陆数据时如果以ASSYSDBA的身份登陆,需要使用外部的口令文件,口令文件的使用受参数REMOTE_LOGIN_PASSWORDFILE={NONE|SHARED}的控制。
REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令文件
REMOTE_LOGIN_PASSWORDFILE=(SHARED):一个或多个数据库可以共享使用一个密码文件。
补充:
EXCLUSIVE是为了向后兼容而在10g里也被支持的一个值,但在10g里它的作用和shared已经是一样的了。
(一)在服务器端,如果我们禁用了操作系统认证,此时以SYSDBA登陆数据库就需要使用外部密码文件:
[oracle@secdb1admin]$sqlplus/assysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar13
Copyright(c)1982,2005,Oracle.Allrightsreserve
ERROR:
ORA-01031:insufficientprivileges
使用密码文件:
[oracle@secdb1admin]$sqlplussys/oracleassysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar13Copyright(c)1982,2005,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptions
如果我们同时通过修改参数禁用了密码文件:
SYS@PROD>showparameterremote_login_passwordfile;
NAMETYPEVALUE
--------------------------------------------remote_login_passwordfilestringEXCLUSIVE
SYS@PROD>altersystemsetremote_login_passwordfile=nonescope=spfile;
Systemaltered.
SYS@PROD>shutdownimmediate;
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SYS@PROD>startup
ORA-01031:insufficientprivileges
可以看到,此时因为无法使用外部的口令文件,我们已经无法重新启动数据库了。此时,只好改回操作系统认证登陆数据库,然后将此参数改回。
SQLNET.AUTHENTICATION_SERVICES=(all)
[oracle@secdb1admin]$sqlplus/assysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1313:58:312013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
Connectedtoanidleinstance.
SYS@PROD>startup
ORACLEinstancestarted.
TotalSystemGlobalArea314572800bytes
FixedSize1219184bytes
VariableSize92276112bytes
DatabaseBuffers218103808bytes
RedoBuffers2973696bytes
Databasemounted.
Databaseopened.
SYS@PROD>altersystemsetremote_login_passwordfile=exclusivescope=spfile;
Systemaltered.
重启使参数生效。
到此,我们可以清楚的看到了口令文件认证和操作系统认证的登陆方式。接下来,我们在来从客户端的角度更清晰的解析一下口令文件。
(二)在客户端,我们可以如下命令登陆数据库(注意:此时登陆机器是secdb2,上面的实验环境是secdb1机器):
[oracle@secdb2admin]$sqlplussys/oracle@PRODassysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1314:24:072013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
Connectedtoanidleinstance.
SYS@PROD>
此时使用了口令文件,如果在服务器端我们把口令文件禁用:
SYS@PROD>altersystemsetremote_login_passwordfile=nonescope=spfile;
Systemaltered.
重启使生效
此时客户端再来连接PROD数据库:
[oracle@secdb2admin]$sqlplussys/oracle@PRODassysdba
SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1314:30:342013
Copyright(c)1982,2005,Oracle.Allrightsreserved.
ERROR:
ORA-01017:invalidusername/password;logondenied
无法连接到PROD数据库
此时再一次清楚的看到了口令文件的作用,以及如何对其进行禁用管理。
Ballontt
2013/3/13
---end---
相关文章推荐
- oracle中os认证,参数remote_login_passwordfile,口令文件
- oracle操作系统认证和口令文件认证
- oracle操作系统认证和口令文件认证
- oracle认证方式分为操作系统认证和口令文件认证2种方式
- 与useradd命令相关的两个默认配置文件
- sqlloader中关于ctl控制文件的相关参数说明
- Oracle OS认证以及口令文件
- 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
- 数据库启动相关的参数文件
- linux下口令相关的文件存放位置说明
- java实现文件下载的工具类-----------什么都可以下载,只要传入response和文件路径 两个参数
- Oracle OS认证口令文件与密码丢失处理
- 关于oracle os认证和口令文件认证的简要解析(转自网易BLOG)
- 从grub rescue> 问题解决,温习操作系统中文件系统的相关内容
- Linux下静态库_库的基本概念;如何生成静态库动态库;nm查看库中包含那些函数、ar生成静态库,查看库中包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-f
- c#中使用api(shfileoperation)进行文件操作,特别详解了回收站相关参数
- Oracle OS认证与口令文件认证详解
- CFtpConnection::GetFile()下载FTP服务器文件及相关参数说明
- oracle os认证和口令文件认证
- ORACLE口令文件验证与操作系统验证