ว่ากันในเรื่องของ Chown

ไม่จำเป็นต้องใช้ www-data:www-data เสมอไปครับ ขึ้นอยู่กับ บริบทของไฟล์หรือโฟลเดอร์ ที่คุณต้องการตั้งสิทธิ์:

  • www-data เป็น user/group ที่ Apache หรือ Nginx ใช้รันเว็บเซิร์ฟเวอร์ใน Ubuntu/Debian โดยปกติ
  • ถ้าคุณต้องการให้เว็บเซิร์ฟเวอร์ อ่านไฟล์เท่านั้น (เช่น HTML, CSS, JS) → ให้สิทธิ์ www-data แค่ read ก็พอ
  • ถ้าคุณต้องการให้เว็บเซิร์ฟเวอร์ เขียนไฟล์ (เช่น อัปโหลดไฟล์, แคช, log) → ต้องให้สิทธิ์ write ด้วย แต่ควรจำกัดเฉพาะโฟลเดอร์ที่จำเป็น เช่น /var/www/html/uploads

✅ แนวทางที่ปลอดภัย

  1. เจ้าของไฟล์เป็น user ของคุณเอง (เช่น thera:thera)
  2. ให้ group เป็น www-data เพื่อให้เว็บเซิร์ฟเวอร์เข้าถึงได้
sudo chown -R thera:www-data /var/www/html
  1. ตั้ง 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 {} \;
  1. ถ้าต้องการให้เว็บเซิร์ฟเวอร์เขียนไฟล์ (เช่น uploads) → ให้สิทธิ์เฉพาะโฟลเดอร์นั้น
sudo chown -R www-data:www-data /var/www/html/uploads chmod 770 /var/www/html/uploads

สรุป: ไม่ควรทำทั้งเว็บเป็น www-data:www-data เพราะเสี่ยงมาก ถ้าเว็บโดนเจาะ attacker จะเขียนไฟล์ได้ทุกที่