Linux

允許 Apache 以不同的使用者身份執行命令

  • March 31, 2014

我有一個在使用者主目錄中執行多個命令的腳本。這些文件歸使用者所有,Apache(www-data組)只對它們具有讀取權限。該腳本需要通過 PHP 按需執行exec(),並執行一些文件的刪除/解壓縮,由於 Apache 沒有對目錄的寫權限,因此失敗。

我試過sudoers像這樣編輯文件:

www-data ALL=(user) NOPASSWD: /bin/su user -c /home/user/bin/script.sh

但它提示我輸入使用者密碼

我也試過

www-data ALL=(root) NOPASSWD: /usr/bin/sudo su user -c /home/user/bin/script.sh

但這提示www-data輸入sudo密碼

如何在沒有密碼的情況下讓它工作?

終於讓它與這條線一起工作:

www-data ALL=(ALL) NOPASSWD: /usr/bin/sudo -u user /home/user/bin/script.sh

因為我的腳本需要參數,所以我不得不在行尾添加一個“shell 風格的萬用字元”:

www-data ALL=(ALL) NOPASSWD: /usr/bin/sudo -u user /home/user/bin/script.sh [[\:alpha\:]]*

這不完全是我想要的,但它有效(即,我的參數恰好以字母字元開頭,但實際上我希望表達式只匹配字母數字字元、破折號和句點)。

我完全不熟悉 shell 萬用字元和 POSIX 字元類,我使用的基本上是從 sudoers 手冊中複製粘貼的。任何知道這些如何適用於此類問題的人,請留下您的評論!

引用自:https://serverfault.com/questions/157272