由於早期網站大多租用虛擬主機,主機商(虛擬主機)不開放 owner 權限設定。FTP 上傳的檔案都是你自己的 user,但 Apache 執行的身分是 www-data(或 nobody)。因此 Apache 無法寫入 FTP 上傳的目錄。能讓 PHP 寫入資料的唯一方法,就是把資料夾權限設為 777(完全開放)。
但現在已經 2025 年,這個方法在現代 雲主機 = 直接開大門請人入侵、請人來挖礦。
只要輸入像下面這種命令:
curl -T shell.php http://website.com.tw/uploads/
把一句話木馬丟進去。或者:
curl -X PUT -d "<xml>亂碼" http://website.com.tw/uploads/
整個 uploads 直接被毀。
好在時代進步,多數虛擬主機資料夾,只要設成 755 就能讓 PHP 正常存取(因為 suPHP 或 CageFS)。至於雲主機或 VPS,則應該使用以下方法取代 777:
設定資料夾權限(替代777方法)
chmod -R 775 /var/www/xuploads
chown -R www-data:www-data /var/www/uploads
設定檔案權限(替代777方法)
chown www-data:www-data /var/www/html/xsitemap.xml
chmod 664 /var/www/html/xsitemap.xml
這是 XOOPS 上雲後最安全 & 最正確的權限組合。
Apache 能寫、你能寫、非權限者不能寫 → 完美安全模型。
XOOPS 正確安全權限(建議清單)
| 目錄 | 權限 | owner |
|---|---|---|
| uploads | 775 | www-data |
| xoops_data/caches | 770 | www-data |
| xoops_data/configs | 770 | www-data |
| xoops_data/data | 770 | www-data |
| xoops_data/protector | 770 | www-data |
| xoops_lib/modules/protector/configs | 770 | www-data |
按照上述方法設定,不但 XOOPS 能正常運作,還能避免目錄遭植入木馬、被利用挖礦,這才是真正滴水不漏的防護。網站安全,人也安心。
工作心得撰寫 徐嘉裕 Neil hsu
留言
張貼留言