2012-03-21 195 views
0

我試圖用php啓動/停止服務。我添加了用sudo運行命令

%admin ALL=(ALL) NOPASSWD: ALL 

到/ etc/sudousers。當我運行命令(如sudo ls /)作爲常規用戶時,它可以成功運行。

這裏是我的PHP文件

exec("sudo /etc/init.d/service stop"); 

代碼當我在瀏覽器請求該文件,然後在終端檢查過程不停止。 我想念什麼?

+0

你的apache用戶是什麼? – xdazz 2012-03-21 08:24:50

+1

Apache用戶是www-data。 – din2 2012-03-21 08:28:43

+1

是%admin組中的萬維網數據嗎? – 2012-03-21 08:30:39

回答

0

%admin中的「%」,在您的sudoers行的開頭,表示「組」 - 即「admin group」。如果apache用戶不在這個組中,那麼這條線不適用於它。

嘗試

www-data ALL=(ALL) NOPASSWD: ALL 

注意,這是在所有並不安全。您應該限制針對該特定用戶的可用命令。這可以通過明確地給予它們或通過定義Cmnd_Alias來完成(參見man sudoersvisudo中的示例)。