PHP 內執行 BASH Script 的權限問題

有時為了自己方便,會想要在 PHP 網頁執行 BASH Script 指令來更改目錄內的檔案,這時會遇到權限問題。

自己有遇到的解決方式筆記如下:

一、先修改該目錄的 SELinux 的 context 設定成網站內可寫入:

chcon -R -t httpd_sys_rw_content_t FOLDERS/

二、修改執行檔 SELinux 的 context 設定成網站內可執行檔:

chcon -t httpd_exec_t FOLDERS/command.sh

三、把該目錄的群組設給 apache:

chgrp -R apache FOLDERS/

四、(如果有需要) 將該目錄下現有的檔案權限改成 group 可以寫入:

chmod -R g+w FOLDERS/

五、設定該目錄 SetGid,且該目錄應設定成 apache 可 rwx:

chmod g+rwxs FOLDERS/

六、設定該目錄未來所有新增的檔案,皆有 rwx 的權限:

setfacl -m default:g::rwx FOLDERS/

七、經過上述步驟,就可以在 PHP 中執行 Bash Script 來更改目錄內的檔案。