Apache-2.4
CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh 不工作
試圖做一個web界面IPtables管理。
創建了一個文件test.php
$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1'); echo $output;
給 /usr/bin/iptables.sh NOPASSWD 這樣我就可以通過 apache 使用 sudo 執行文件,而無需使用密碼
sudo iptables -L
sudoers 文件:
apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh
但我仍然收到錯誤
我們相信您已經收到了本地系統管理員的正常講座。它通常歸結為以下三件事:#1) 尊重他人的隱私。#2) 打字前三思。#3) 權力越大,責任越大。sudo:需要終端才能讀取密碼;使用 -S 選項從標準輸入讀取或配置 askpass 助手{“mode”:“full”,“isActive”:false}
但是,如果我使用
apache ALL=(root) NOPASSWD: ALL
一切正常。
我仔細檢查了我的目錄並使用了確切的路徑
[root@CentOS bin]# readlink -f iptables.sh /usr/bin/iptables.sh
這裡超級無能,有人可以幫我指路嗎?:'(
您呼叫的命令
sudo
必須與sudoers
文件中的內容匹配,但在您的情況下它們不匹配。你試圖跑
bash /usr/bin/iptables.sh
,但sudoers
只允許你跑/usr/bin/iptables.sh
。
嘗試使用 sudo,因為
/usr/bin/iptables.sh
對 root 的引用。$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'"); echo $output;