Xác định PHP chạy dưới user nào và kiểm tra quyền file


Xác định PHP chạy dưới user nào và kiểm tra quyền file trên Linux

Mục tiêu

Biết tiến trình PHP đang chạy với quyền nào, file nào cần đọc/ghi và cách tránh cấp quyền rộng quá mức.

Các điểm cần xác minh

  • PHP chạy qua PHP-FPM, Apache module hay một mô hình khác.
  • Pool PHP-FPM nào phục vụ ứng dụng.
  • User/group được cấu hình cho pool.
  • User của tiến trình thực tế và quyền trên các thư mục ứng dụng.
  • Những thư mục thực sự cần ghi, chẳng hạn cache, upload hoặc session.

Cách tiếp cận

  1. Kiểm tra cấu hình PHP-FPM và pool tương ứng.
  2. Kiểm tra tiến trình đang chạy để đối chiếu user/group thực tế.
  3. Kiểm tra quyền owner, group và mode trên các file/thư mục cần thiết.
  4. Tách file mã nguồn khỏi thư mục dữ liệu có thể ghi.
  5. Thử nghiệm bằng một thao tác ứng dụng hợp lệ và theo dõi log lỗi permission.

Nguyên tắc least privilege

  • Không dùng chmod -R 777 như cách sửa lỗi mặc định.
  • Không để tài khoản web ghi vào toàn bộ mã nguồn nếu không cần thiết.
  • Chỉ cấp quyền ghi cho các thư mục có nhu cầu rõ ràng.
  • Hạn chế quyền đọc đối với file cấu hình chứa secret.
  • Kiểm tra ACL, SELinux/AppArmor hoặc cơ chế bảo vệ bổ sung nếu quyền Unix thông thường không giải thích được lỗi.

Checklist

  • Đã xác định đúng PHP handler và pool.
  • User/group thực tế đã được xác minh.
  • Quyền ghi được giới hạn ở thư mục cần thiết.
  • Ứng dụng chạy bình thường sau thay đổi.
  • Không còn quyền rộng không cần thiết.

Nội dung nên bổ sung khi xuất bản

Thêm ví dụ lệnh cho distro thực tế, ảnh cấu hình đã làm sạch thông tin nhạy cảm và giải thích cách rollback.