Tôi đang thiết lập một máy chủ web sẽ lưu trữ một số trang web khác nhau dưới dạng Apache Virtualhosts, mỗi máy chủ này sẽ có khả năng chạy các tập lệnh (chủ yếu là PHP, possiblu khác).
Câu hỏi của tôi là làm thế nào tôi cách ly từng Virtualhost này với nhau và với phần còn lại của hệ thống? Tôi không muốn ví dụ trang web X đọc cấu hình của trang web Y hoặc bất kỳ tệp "riêng tư" nào của máy chủ.
Hiện tại tôi đã thiết lập Virtualhost với FastCGI, PHP và SUExec như được mô tả ở đây ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ), nhưng SUExec chỉ ngăn người dùng chỉnh sửa / thực thi các tệp khác ngoài tệp của họ - người dùng vẫn có thể đọc thông tin nhạy cảm như tệp cấu hình.
Tôi đã nghĩ đến việc loại bỏ quyền đọc toàn cầu UNIX cho tất cả các tệp trên máy chủ, vì điều này sẽ khắc phục vấn đề trên, nhưng tôi không chắc liệu tôi có thể làm điều này một cách an toàn mà không làm gián đoạn chức năng máy chủ hay không.
Tôi cũng đã xem xét việc sử dụng chroot, nhưng dường như điều này chỉ có thể được thực hiện trên cơ sở mỗi máy chủ chứ không phải trên cơ sở mỗi máy chủ ảo.
Tôi đang tìm kiếm bất kỳ đề xuất nào sẽ cách ly Virtualhost của tôi với phần còn lại của hệ thống.
PS Tôi đang chạy máy chủ Ubuntu 12.04
TRẢ LỜI của tôi: Tôi đã kết thúc với gần như theo cấu hình hiện tại của mình, nhưng thực hiện một nhà tù chroot cho tất cả các máy chủ ảo, ví dụ như có nhà tù chroot /var/www
và sau đó có tất cả dữ liệu của người dùng trong mỗi thư mục con với quyền của nhóm / người khác r / w / x tàn tật. Tùy chọn này là mong muốn đặc biệt bởi vì tất cả đều có thể mà không cần sửa đổi mã nguồn.
Tôi đã chọn câu trả lời của @Chris, vì nó được viết kỹ lưỡng và cũng được coi là FTP và SELinux
mod_userdir
cung cấp lưu trữ ảo của các tên miền riêng biệt. Ngoài ra, tôi có lo ngại về bảo mật về mặt cách ly vì tôi không thể tìm thấy bất cứ điều gì về điều đó giữa các thư mục người dùng trong Apache. Nó chỉ có vẻ không cung cấp tính năng đó.