ไม่จำเป็นต้องใช้ www-data:www-data
เสมอไปครับ ขึ้นอยู่กับ บริบทของไฟล์หรือโฟลเดอร์ ที่คุณต้องการตั้งสิทธิ์:
www-data
เป็น user/group ที่ Apache หรือ Nginx ใช้รันเว็บเซิร์ฟเวอร์ใน Ubuntu/Debian โดยปกติ- ถ้าคุณต้องการให้เว็บเซิร์ฟเวอร์ อ่านไฟล์เท่านั้น (เช่น HTML, CSS, JS) → ให้สิทธิ์
www-data
แค่ read ก็พอ - ถ้าคุณต้องการให้เว็บเซิร์ฟเวอร์ เขียนไฟล์ (เช่น อัปโหลดไฟล์, แคช, log) → ต้องให้สิทธิ์ write ด้วย แต่ควรจำกัดเฉพาะโฟลเดอร์ที่จำเป็น เช่น
/var/www/html/uploads
✅ แนวทางที่ปลอดภัย
- เจ้าของไฟล์เป็น user ของคุณเอง (เช่น
thera:thera
) - ให้ group เป็น
www-data
เพื่อให้เว็บเซิร์ฟเวอร์เข้าถึงได้
sudo chown -R thera:www-data /var/www/html
- ตั้ง permission ให้เหมาะสม
- ไฟล์:
640
(owner read/write, group read) - โฟลเดอร์:
750
(owner rwx, group rx)
- ไฟล์:
find /var/www/html -type d -exec chmod 750 {} \;
find /var/www/html -type f -exec chmod 640 {} \;
- ถ้าต้องการให้เว็บเซิร์ฟเวอร์เขียนไฟล์ (เช่น uploads) → ให้สิทธิ์เฉพาะโฟลเดอร์นั้น
sudo chown -R www-data:www-data /var/www/html/uploads chmod 770 /var/www/html/uploads
สรุป: ไม่ควรทำทั้งเว็บเป็น www-data:www-data
เพราะเสี่ยงมาก ถ้าเว็บโดนเจาะ attacker จะเขียนไฟล์ได้ทุกที่