Apache HTTPd bắt đầu như một quá trình được chạy bởi root
để có thể lắng nghe các cổng <1024 (80 cho HTTP và 443 cho HTTPS). Người dùng bình thường không thể làm điều đó.
Ngoài ra, một số tệp cấu hình chỉ có thể đọc được bằng root, trong quá trình khởi chạy. Ví dụ: người dùng Apache của bạn (ví dụ www-data
) không cần phải đọc tệp khóa riêng nếu bạn đã cấu hình SSL.
Thật tốt khi không chạy mọi thứ như root: theo cách này, một lỗi hoặc dịch vụ bị xâm nhập sẽ không thể gây ra nhiều thiệt hại cho hệ thống như khi chạy bằng root.
BIÊN TẬP:
(Tôi chỉ giả sử www-data
thay vì wwwdata
, nhưng không sao, nó sẽ chạy khi người dùng bạn đặt nó chạy.)
Không có bộ nhật ký cung cấp bất cứ điều gì bất thường. Tôi không biết làm thế nào nó chạy theo cách đó.
Nó chỉ chạy theo cách này: nó bắt đầu một quá trình với quyền root và sau đó giả mạo người dùng khác là người dùng bạn đã chọn.
Nếu bạn nhận được id quá trình gốc (ví dụ với ps auwx | grep apache2
, hoặc grep httpd
tùy thuộc vào phân phối), sau đó chạy pstree -p -u THE_PROCESS_ID
, bạn sẽ thấy cấu trúc phân cấp rõ ràng. Quá trình cha mẹ phải luôn luôn chạy vĩnh viễn (nếu không, bạn cũng sẽ giết các tiến trình con của nó).
Xem User
tài liệu (Chỉ thị chung Apache MPM) :
Nếu bạn khởi động máy chủ với quyền root thì quá trình cha mẹ vẫn chạy như root là bình thường.