温馨提示×

centos lsnrctl权限设置指南

小樊
45
2025-12-03 18:24:12
栏目: 智能运维

CentOS 上 lsnrctl 权限设置指南

一 运行身份与环境准备

  • 以专用的 oracle 用户执行所有监听器操作,避免直接使用 root
  • 正确设置环境变量(建议写入 ~/.bash_profile/etc/profile):
    • 示例:
      • export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
      • export ORACLE_SID=ORCL
      • export PATH=$ORACLE_HOME/bin:$PATH
    • 使配置生效:source ~/.bash_profile
  • 基本检查与启停:
    • 检查可执行权限:ls -l $(which lsnrctl)
    • 启动/停止/状态:lsnrctl start | stop | status
    • 修改 listener.ora 后可用 lsnrctl reload 使配置生效(无需完全重启)。

二 文件系统与目录权限

  • 将 Oracle 软件目录属主设为 oracle:oinstall,权限建议 755(按需收紧):
    • chown -R oracle:oinstall $ORACLE_HOME
    • chmod -R 755 $ORACLE_HOME
  • 确保 $ORACLE_HOME/bin/lsnrctl 具备可执行权限(通常已由安装器设置):
    • chmod +x $ORACLE_HOME/bin/lsnrctl
  • 网络与日志目录(如 $ORACLE_HOME/network/admin、日志目录)应可由 oracle 读写,避免因权限不足导致监听启动失败或无法写入日志。

三 使用 sudo 精细化授权(推荐)

  • 不建议将 lsnrctl 设为全局 NOPASSWD,推荐仅授权给 dba 组成员按需执行:
    • 编辑 sudoers(visudo):
      • %dba ALL=(oracle) NOPASSWD: $ORACLE_HOME/bin/lsnrctl start, $ORACLE_HOME/bin/lsnrctl stop, $ORACLE_HOME/bin/lsnrctl status, $ORACLE_HOME/bin/lsnrctl reload
    • 运维人员使用时:
      • sudo -u oracle $ORACLE_HOME/bin/lsnrctl status
  • 如需更细粒度,可拆分命令或仅开放 status 只读操作给值班账号。

四 监听器口令与本地 OS 认证

  • 本地操作建议保持默认的 Local OS Authentication,仅本地 oracle 用户可管理监听器,安全性更高。
  • 如确需远程管理,可设置监听器口令并保存配置:
    • lsnrctl
      • set password
      • change_password
      • save_config
  • 注意:启用口令后,远程执行 stop/reload 等管理命令需提供口令;为降低风险,生产环境优先采用本地管理或跳板机+sudo 的方案。

五 防火墙与 SELinux 控制

  • 防火墙放行监听端口(默认 1521/TCP):
    • firewalld:firewall-cmd --permanent --add-port=1521/tcp && firewall-cmd --reload
    • 或:firewall-cmd --permanent --add-service=oracle && firewall-cmd --reload
  • SELinux:
    • 如启用,确保 Oracle 目录与进程上下文正确;出现异常可用 ausearch/audit2allow 辅助生成策略模块,或临时 setenforce 0 排查(验证后请恢复 enforcing)。

0