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.
www-datawww-data775 hoặc 755 nếu không cần ghi từ user khác ngoài web serversudo 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.
root) để tạo filewww-data ghi filesudo 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.
umask để tạo file có quyền ghi cho groupKhi 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).
public/)Nếu folder cache nằm trong thư mục public (như public/cache/), bạn cần chặn truy cập trực tiếp qua trình duyệt.
.htaccess trong /cache:<IfModule mod_authz_core.c>
Require all denied
</IfModule>
location ^~ /cache/ {
deny all;
return 403;
}
Thay vì /var/www/html/cache, hãy dùng:
/var/www/cache
→ PHP có thể ghi cache, nhưng trình duyệt không thể truy cập.
Ví dụ: nếu nhiều user cùng chạy CLI/scripts ghi vào cache, bạn có thể:
sudo groupadd mycachegroup
sudo usermod -a -G mycachegroup www-data
sudo chown -R :mycachegroup /path/to/cache
sudo chmod -R 770 /path/to/cache
.php trong cache, tránh việc include nếu có thể bị RCE (remote code execution)Nếu bạn cache bằng PHP (như some-cache.php), hạn chế dùng include() lại. Nên dùng JSON, serialize hoặc file .txt, .json, v.v.
root nếu file được web server ghi → dễ gây lỗi permission.777 → tiềm ẩn rủi ro bảo mật rất cao nếu server bị tấn công.owner:group là www-data:www-data và phân quyền 775.www-data và thiết lập umask phù hợp.