PHP无法访问RNDC
P粉794851975
P粉794851975 2024-02-21 21:33:27
0
2
323

我正在编辑区域文件 /var/named/rpz.local 并需要在执行此命令后重新加载 rndc:

cd /var/named
rndc reload rpz.local

作为root用户使用cli一切都很好,但问题是我无法通过nginx(PHP)运行/usr/sbin/rndc。那么你能给我一个线索吗?

我可以运行这个:

$Output = shell_exec("uptime");
print($Output);

但是如果我运行此命令,输出将为空: system('rndc 重新加载'); 或者 shell_exec('rndc 相关'); 看来我无法访问 rndc 因为我什至无法运行: rndc 状态 但如果我运行这个:

system(`uptime`); // Sun Aug 20 22:36:51 +0330 2023
$Test = shell_exec(`rndc status`); // return nothing
print($Test);
system('uptime');//  00:28:03 up 18 days, 10:47,  2 users,  load average: 0.00, 0.02, 0.05

I have the result of uptime and uptime command. But there is nothing f或者 shell_exec('rndc reload'). I also did below command but it didn't w或者k:

setfacl -m u:nginx:rwx rpz.local
setfacl -m u:nginx:rwx /usr/sbin/rndc

P粉794851975
P粉794851975

全部回复(2)
P粉545956597

如果您在 Nginx 中的 PHP 以 root 身份运行,您就会遇到一个严重的问题,然后还会出现更多问题。

请查阅您的操作手册,了解 root 用户的角色及其用途。然后相应地管理系统。

或者简而言之:只有您可以作为 root 执行某些操作,并不意味着您应该从 PHP 内部执行此操作。 了解原因。真的。说真的。

如果不能,请联系了解您所操作系统的负责系统管理员,并当面澄清要求。

P粉463291248

问题已解决。如何? 当尝试运行 rndc 命令时,我得到 NULL 。正如提到的这篇文章我将命令更改为:

$Test = shell_exec(`rndc reload rpz.local 2>&1`); // return permission denied for rndc.key file
print($Test);

所以我做到了:

setfacl -m u:nginx:rwx /etc/rndc.key

问题解决了。

非常感谢亲爱的@hake

P.S正如@hake提到的,我们将nginx作为sudoer运行或将nginx添加到sudoer组是错误的,所以不要犯错误,尽管调试是可以的和测试(不超过 1-2 小时)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!