有時為了自己方便,會想要在 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 來更改目錄內的檔案。