在 Debian(以及大多数 Linux 发行版)上,lsnrctl 是 Oracle Database Listener 的管理工具,通常位于 Oracle 软件目录中(如 $ORACLE_HOME/bin/lsnrctl)。它的“权限”问题一般涉及 运行用户、文件权限、sudo 配置 等方面。下面按常见场景说明。
✅ 使用 Oracle 软件安装用户运行 lsnrctl
通常是 oracle 用户,而不是 root。
su - oracle
lsnrctl status
只要满足以下条件,一般无需额外设置权限:
ORACLE_HOME 已正确设置典型路径:
$ORACLE_HOME/bin/lsnrctl
正确权限示例:
-rwxr-x--x 1 oracle oinstall 123456 Jul 1 10:00 lsnrctl
不要随意 chmod 777,否则会带来安全风险。
如果权限异常,可恢复为:
chown oracle:oinstall $ORACLE_HOME/bin/lsnrctl
chmod 751 $ORACLE_HOME/bin/lsnrctl
编辑 sudo 配置:
visudo
添加:
youruser ALL=(oracle) NOPASSWD: /u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl
使用方式:
sudo -u oracle lsnrctl status
✅ 安全、可控,生产环境首选。
chmod u+s $ORACLE_HOME/bin/lsnrctl
⚠️ 风险:
路径示例:
$ORACLE_HOME/network/admin/listener.ora
推荐权限:
chown oracle:oinstall listener.ora
chmod 640 listener.ora
如果 listener 使用 1024 以下端口(如 1521):
✅ 正常情况:
lsnrctl start
由 oracle 用户执行即可。
bash: lsnrctl: command not foundexport ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
建议写入:
~oracle/.bash_profile
TNS-12555: TNS permission denied通常是:
检查:
ls -l $ORACLE_HOME/network/admin
✅ 标准做法
oracle 用户运行 lsnrctlsudo❌ 不推荐
chmod 777如果你愿意,可以把以下信息发我,我可以给你精确权限方案: