Cách phân quyền thư mục cache đúng chuẩn trong môi trường web (PHP/WordPress/Laravel)

Trong môi trường web, đặc biệt với các nền tảng như PHP, WordPress, Laravel, thư mục cache nên được phân quyền đúng cách để đảm bảo web server có thể đọc/ghi mà không gây lỗi "Permission denied" hoặc rủi ro bảo mật.

✅ Khuyến nghị cấu hình

  • Chủ sở hữu thư mục (owner): www-data
  • Nhóm (group): www-data
  • Quyền (permissions): 775 hoặc 755 nếu không cần ghi từ user khác ngoài web server

🛠 Cách thiết lập

sudo chown -R www-data:www-data /path/to/cache
sudo chmod -R 775 /path/to/cache

Lệnh trên sẽ đảm bảo web server (Nginx hoặc Apache) có thể toàn quyền đọc và ghi trong thư mục cache mà không cần quyền root.


🔄 Nếu cần sử dụng user khác (ví dụ: root) để tạo file

Cách 1: Dùng ACL để cho phép www-data ghi file

sudo apt install acl
sudo setfacl -R -m u:www-data:rwx /path/to/cache
sudo setfacl -dR -m u:www-data:rwx /path/to/cache

ACL cho phép www-data có quyền ghi kể cả khi file được tạo bởi user khác.

Cách 2: Dùng umask để tạo file có quyền ghi cho group

Khi chạy lệnh với user khác (ví dụ: root), có thể giữ group là www-data và dùng umask 002:

umask 002
# Sau đó chạy các lệnh tạo file

umask 002 đảm bảo các file mới tạo sẽ có quyền ghi cho group (www-data).


❌ Những điều không nên làm

  • Không nên đặt chủ sở hữu là root nếu file được web server ghi → dễ gây lỗi permission.
  • Không nên cấp quyền 777 → tiềm ẩn rủi ro bảo mật rất cao nếu server bị tấn công.

✅ Kết luận

  • Tốt nhất: đặt owner:groupwww-data:www-data và phân quyền 775.
  • Nếu cần user khác tạo file → dùng ACL hoặc đảm bảo group là www-data và thiết lập umask phù hợp.