$ chmod 0711 lsnrctl
然而,在这种情况下,您应该通过强制使用密码防止未经授权的使用。 当您设置密码时,所有命令(HELP 等某些善意的命令除外)都被禁用。
设置密码的方式在所有版本中都一样,但是实施机制不同:
- 在 Oracle9i 数据库第 2 版和更低版本中,所有用户都需要密码。
- 在 Oracle 数据库 10g 第 1 版和更高版本中,拥有数据库软件的 OS 用户不需要密码。 所有其他用户需要密码。
下面介绍如何设置密码: $ lsnrctl
LSNRCTL> change_password
Old password: <OldPassword> Not displayed
New password: <NewPassword> Not displayed
Reenter new password: <NewPassword> Not displayed
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prolin1)(PORT=1521)(IP=FIRST)))
Password changed for LISTENER
The command completed successfully
如果您是首次设置密码,可以在要求提供“旧密码”时按 ENTER 键。 更改之后,将其保存到参数文件中: LSNRCTL> save_config
该命令将对密码进行加密,并将其放到监听程序参数文件中。 您可以稍后对其进行检查: #----ADDED BY TNSLSNR 24-OCT-2005 17:02:28---
PASSWORDS_LISTENER_ODSSDB01 = 75CD180DE6C75466
#--------------------------------------------
在决定使用命令时,您需要提供正确的密码。 (在 Oracle 数据库 10g 和更高版本中,拥有该软件的 OS 用户不需要密码。) LSNRCTL> services
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-01169: The listener has not recognized the password
要传递正确的密码,请执行以下内容: LSNRCTL> set password mypassword
The command completed successfully
LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
...
如果传递的密码不正确,您将收到以下错误信息 TNS-01169: The listener has not recognized the password.
如果没有传递密码并尝试执行强大的命令,您将收到以下错误信息 TNS-01190: The user is not authorized to execute the requested listener command
要确认密码是否有效,请查看监听程序的 STATUS 显示中的设置。 为此,可发出以下命令: $ lsnrctl status
版本间的输出不同。 对于 Oracle9i 数据库,下面是部分输出: STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 9.2.0.6.0 - Production
Start Date 25-OCT-2005 10:26:47
Uptime 0 days 13 hr.53 min. 8 sec
Trace Level off
Security ON
注意最后一行 (Security ON),它指示已设置密码。
在 Oracle 数据库 10g 中,该进程稍有不同。 请记住,在该版本中,监听程序设置为了仅 Oracle 软件所有者可执行,无需密码。 如果已经设置了密码,则其他用户可以在提供密码后执行监听程序。 下面是状态显示: STATUS of the LISTENER
------------------------
Alias LISTENER_ODSPDB02
Version TNSLSNR for HPUX:Version 10.1.0.4.0 - Production
Start Date 16-OCT-2005 05:58:35
Uptime 9 days 17 hr.44 min. 41 sec
Trace Level off
Security ON:Local OS Authentication
注意最后一行 ON: Local OS Authentication,它指示尚未设置密码。 如果设置了密码,该行显示为: Security ON: Password or Local OS Authentication
注意上面添加的子句 Password,它指示已经设置密码。
结论 在 Oracle 数据库 10g 和更高版本中,使用 OS 身份验证来验证用户,没有必要提供密码来启动或停止监听程序。 在 Oracle9i 和更低版本中,您需要提供密码,因此脚本需要密码。 操作计划
IF Oracle 数据库 10g 或更高版本 THEN |
|
删除所有用户的权限,所有者除外 |
ELSE |
|
删除所有用户的权限,所有者除外 设置操作监听程序的密码 |
END IF |
1.7 保护监听程序
背景 创建一个缓冲区溢出,即通过发送要执行的大型字符串使监听程序崩溃是常用的入侵策略。 另一种常用策略是使用 SET DISPLAYMODE VERBOSE 从 lsnrctl 实用工具查看各种组件。 在这种情况下,黑客可以通过在有漏洞的计算机上运行 lsnrctl 以管理目标服务器上的监听程序来操纵设置。下面就是一个例子: LSNRCTL> set trc_level support
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prolin1)(PORT=1521)))
LISTENER parameter "trc_level" set to support
The command completed successfully
LSNRCTL> set trc_directory /tmp
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prolin1)(PORT=1521)))
LISTENER parameter "trc_directory" set to /tmp
The command completed successfully
(编辑:aniston)
|