2012-12-25 76 views
1

我正在嘗試使用vpopmail的vadddomain添加新的虛擬域。由於apache用戶無法訪問vpopmail的二進制文件,我不能直接從PHP登錄exec('../bin/vadddomain...')如何使用PHP的root權限運行shell腳本?

我做了一個shell腳本(adddomain.sh)如下:

#!/bin/bash 
cd /home/lxadmin/mail/bin 
./vadddomain $1 postmaster_password 

並採用visudo(忘了安全現在是)附加該行/etc/sudoers

ALL ALL=NOPASSWD: /home/lxadmin/mail/bin/adddomain.sh 

我有這樣的事情在我的PHP腳本中:

exec('sudo /home/lxadmin/mail/bin/adddomain.sh example.com', $output); 

但這根本不起作用(域example.com不會被添加到vpopmail中)。 但是,當我通過SSH和root用戶運行此命令時,它的工作原理。

任何人都可以告訴我這裏有什麼問題嗎?

+0

'chmod + s'也許? –

+1

似乎simular:http://stackoverflow.com/questions/3173201/sudo-in-php-exec –

+0

@WaleedKhan哪個文件到底?順便說一句''chmod'ed'adddomain.sh'和'vadddomain'和我的php文件沒有運氣:( –

回答

0

這應該可以通過添加webmaster -user tot /etc/sudoers文件並簡單地接受該用戶使用您願意使用的命令。我不建議直接在你的php中使用sudo命令,因爲你可能不得不在這個地方存儲密碼,當然你不想要!您不希望在某處或其他開發人員無意中發佈您的密碼,而您不希望對您的代碼擁有root權限。

簡單地使用root命令的另一個大缺點是,當你在代碼中存在安全漏洞時,我可以通過例如表單運行sudo命令。要特別小心。

詩篇。我是SSH新手,並設置用戶權限,所以如果我錯了,請糾正我。但這就是我所知道的。

+0

我不關心se因爲它是我工作的開發環境。我希望代碼和權限只是簡單的工作! –

+0

關於你提到的密碼部分我想我可以使用無密碼'sudo'來防止在代碼中使用清除密碼。 –

+0

你很擔心,但你希望它很簡單的工作。我認爲你的意思是'我不關心安全......'? – Jelmer

相關問題