PHP 无法访问 RNDC

PHP can't access RNDC

提问人:GameO7er 提问时间:8/21/2023 更新时间:8/21/2023 访问量:38

问:

我正在编辑一个区域文件,在完成此命令后需要重新加载 rndc:/var/named/rpz.local

cd /var/named
rndc reload rpz.local

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

我可以运行这个:

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

但是如果我运行此命令,输出为 null: 或者似乎我无法访问,因为我甚至无法运行:system('rndc reload');shell_exec('rndc relad');rndc rndc status

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

我有结果和命令。但是没有什么可以的.我也做了以下命令,但没有用:uptimeuptimeshell_exec('rndc reload')

setfacl -m u:nginx:rwx rpz.local
setfacl -m u:nginx:rwx /usr/sbin/rndc
名为 rocky-os php nginx

评论


答:

2赞 hakre 8/21/2023 #1

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

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

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

或者简而言之:只有你才能做一些事情,因为root一定不意味着你应该从PHP内部做。了解原因。真。认真地。

如果不能,请联系了解您正在操作的系统的负责任的系统管理员,并逐人澄清要求。

评论

0赞 GameO7er 8/21/2023
nginx 不是 sudoer。虽然我把它添加到 sudoer 但结果是一样的,然后我从 sudoer 列表中删除了 nginx。问题是我没有任何错误日志,所以我没有任何线索。这就是我在这里问的原因。在Leas,给我一个线索:)除此之外,它在“CentOS 7”上运行良好,但不知道为什么它在“Rocky OS”上无法运行
0赞 hakre 8/21/2023
同样,您首先应该了解原因。这不是 5 分钟的调试,开始学习主题,如果 CentOS7 和 Rock OS 有区别,先了解一下区别。你不应该规避系统管理,因为如果你这样做,你会失去它。而是根据需要配置系统。这超出了编程问题的范围。
1赞 GameO7er 8/21/2023 #2

问题已经解决。如何? 我尝试运行命令时得到了。因此,正如这篇文章所提到的,我将我的命令更改为:NULLrndc

$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

PS 如@hake所述,我们以 sudoer 的身份运行 nginx 或将 nginx 添加到 sudoer 组是错误的,所以不要犯错,尽管调试和测试是可以的(1-2 小时不多)。