首頁  >  問答  >  主體

PHP無法存取RNDC

我正在編輯區域檔案 /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粉794851975P粉794851975264 天前367

全部回覆(2)我來回復

  • P粉545956597

    P粉5459565972024-02-22 00:36:26

    如果您在 Nginx 中的 PHP 以 root 身分執行,您就會遇到一個嚴重的問題,然後還會出現更多問題。

    請查閱您的操作手冊,以了解 root 使用者的角色及其用途。然後相應地管理系統。

    或簡而言之:只有您可以作為 root 執行某些操作,並不意味著您應該從 PHP 內部執行此操作。 了解原因。真的。說真的。

    如果不能,請聯絡以了解您所作業系統的負責系統管理員,並當面澄清要求。

    回覆
    0
  • P粉463291248

    P粉4632912482024-02-22 00:06:56

    問題已解決。如何? 當嘗試執行 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 小時)。

    回覆
    0
  • 取消回覆