2011-12-11 74 views
1

我有一個包含shell_execute()的PHP腳本,它執行的命令通常需要sudo。我已經編輯在sudoers與visudo命令包含以下內容:在etc/sudoers中授予的權限僅持續10分鐘

www-data ALL = NOPASSWD: /var/root/node/npm/node_modules/less/ 
%users ALL = NOPASSWD: /var/root/node/npm/node_modules/less/ 

我懷疑要麼應該工作,但是我用皮帶和吊帶的方法去確定。

我在用vim編輯etc/sudoers,所以在添加這些行之後,我會這樣做:x和一切正常。我的PHP腳本做了它應該做的事...大約10-15分鐘。然後腳本停止工作。具體來說,shell_exec()停止工作。

如果我再用sudo visudo,我的新行仍然存在。但只有當我再次保存時,腳本纔會重新開始工作。

誰能告訴我爲什麼會發生這種情況?我有兩個猜測是不是很好:

  1. 有某種寬限期啓動時,我sudo visudo,這是什麼讓我的腳本工作(但直到過期)。
  2. etc/sudoers中的新數據停留在sudoers.tmp(「鎖定文件」)中...... 這些都不屬於我。
+1

這聽起來像一個服務器管理員問題給我。也許serverfault.com會是一個更好的地方問這個問題? – middus

+0

只是一個猜測,但它看起來像你試圖運行node.js編譯你的CSS樣式較少?如果是這樣的話,我可以推薦一些排序或CI服務器,如[CIJoe](https://github.com/defunkt/cijoe)或[Travis](http://travis-ci.org) – adlawson

+0

@adlawson:這就是正是我想要做的。但是,這些服務器設置似乎在我的頭上。我目前正在運行MAMP。 – emersonthis

回答

0

根據在PHP文檔a comment,這將工作。

system('echo "PASS" | sudo -u root -S COMMAND'); 

我還沒有測試過它。

+0

我見過這個,但是那些相同的評論承認這是非常不安全的。這意味着祕密密碼在文件中浮動。 – emersonthis