2013-05-01 48 views
1

我能夠從外殼使用命令./del_user.sh無法使用PHP和bash腳本

del_user.sh直接刪除Linux用戶刪除的Linux用戶是如下

#!/bin/sh 
userdel username 

當我運行這個腳本從PHP頁面,它不起作用。

echo shell_exec('./del_user.sh'); 

這兩個文件都在同一個目錄中。

可能是什麼問題?

+1

'www-data'用戶是否有權限運行該腳本? – Waygood 2013-05-01 13:17:40

+3

它的權限,你可能能夠刪除一個用戶,當你是根,但網絡服務器不會有,實際上應該沒有權限這樣做 – Anigel 2013-05-01 13:17:47

+0

我應該在哪裏設置權限? – KiranD 2013-05-01 13:22:04

回答

1
  1. del_user.sh不帶參數,因此您正在腳本中的任何硬編碼用戶上運行腳本。除非您修改腳本以允許命令行參數,否則這將不起作用。
  2. 雖然這個任務可以由PHP來完成,但這當然不是主要功能,應該委託給更合適的應用程序。

另外,你還沒有說明你的目標是什麼或者這個腳本應該做什麼。這是一些用戶管理應用程序的一部分,還是僅僅是一個小任務的一次性?

回答: 要啓用此功能,您必須讓Apache具有sudo功能,以便獲得暫時提升的權限。您可能需要根據您的操作系統做一些搜索操作,但這個鏈接提供了一些關於如何在Ubuntu中執行操作的指導:Ubuntu Forums

我也建議不要使用bash腳本,因爲它並不是真的有必要做這個。您可以使用接受命令行參數的PHP腳本。所以在你的主要腳本中,你可以有這樣的東西:shell_exec('php /path/to/del_user.php username');

然後在del_user.php你會有類似shell_exec('userdel '.$argv[1]);。關於命令行參數的更多信息可以在這裏找到:$argv

最後,你可以把它直接放到你的主腳本中,而不是使用shell_exec兩次。換句話說,只需使用shell_exec('userdel '.$username);而不是調用腳本。由於Apache將能夠sudo,因此應該能夠直接執行此操作。

+0

是的,它是用戶管理應用程序的一部分。用戶應該能夠從Web界面添加,編輯和刪除Linux用戶。你能否給我更多關於如何實現這一目標的信息? – KiranD 2013-05-01 13:25:59

+1

添加更多我的答案。 – Chad 2013-05-01 14:09:34

+0

更改visudo中的權限。謝謝 – KiranD 2013-05-02 05:52:07