nginx PHP无法访问RNDC

06odsfpq  于 2023-10-17  发布在  Nginx
关注(0)|答案(2)|浏览(131)

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

cd /var/named
rndc reload rpz.local

一切都是伟大的,以root用户,但问题是,我不能运行/usr/sbin/rndc的nginx(PHP)。所以你能不能给我点提示给予?
我可以运行这个:

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

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

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

我有uptimeuptime命令的结果。但是没有shell_exec('rndc reload')。我也做了下面的命令,但它没有工作:

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

o4tp2gmn1#

一切都是伟大的,以root用户,但问题是我不能运行我不能运行/usr/sbin/rndc的nginx(PHP)。所以你能不能给我点提示给予?

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

有关root用户的角色及其用途,请参阅操作手册。然后相应地管理系统。
简而言之:只有你能以root身份做一些事情,这并不意味着你应该在PHP内部做。明白为什么。真的真的
如果你不能,联系一个负责的系统管理员,他知道你正在使用的系统,并一个人对一个人地阐明需求。

gcuhipw9

gcuhipw92#

这个问题已经解决了。如何?我得到了NULL当试图运行rndc命令.如前所述,this post我将命令改为:

$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

问题就解决了
非常感谢您的评分

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

相关问题