2013-06-01 34 views
0

我已經在我的Ubuntu 12.04上使用帶有SSL的Apache設置了一個網絡服務器。但是,當我啓動我的web服務器時,apache啓動並以root身份運行。它運行,佔地80端口,我必須阻止它並手動使用服務的Apache2開始啓動Apache它作爲WWW的數據運行啓動Apache作爲啓動萬維網數據

root  887 0.0 0.3 105692 6576 ?  S 17:18 0:00 /usr/sbin/apache2 -k start 

什麼是保證在重新啓動的最佳方法,它與用戶運行www-data

回答

1

當你想在端口80上偵聽時,apache需要root權限,因爲它是privileged port

在端口80上接收到連接後,apache將產生一個具有非根特權的工作進程來處理通過此連接的套接字。因此,如果您的Web應用程序或apache工作進程中存在錯誤,那麼您不會暴露於root-exploits。

+0

然而,我有問題,Apache啓動並以root身份繼續運行,它不會產生爲www數據運行。我的envvars被設置爲以www-data方式運行,但是我必須首先殺死apache並重新啓動以便以www-data運行 – zurik

+0

您的env vars通常在upstart/systemd/init腳本中被忽略。您必須在init腳本中設置環境變量INSIDE,如果您使用的是發行版附帶的init腳本,這是一個壞主意。重新運行/etc/init.d/apache start | stop | reload實際上會使用你的環境變量。我建議不要使用env vars,而是使用apache配置文件來存儲配置。 – Dyna