Linux
允許 Apache 以不同的使用者身份執行命令
我有一個在使用者主目錄中執行多個命令的腳本。這些文件歸使用者所有,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 手冊中複製粘貼的。任何知道這些如何適用於此類問題的人,請留下您的評論!