目前, top显示,几乎所有的httpd进程都由nobody运行。 “差不多”是因为其中2个是由root运行的。
我怎么能这样做,让我有用户说: dartagnan , porthos , athos , athos运行httpd每个分别为所述的用户?
我希望看到这样的事情,当我跑top :
PID用户命令 1234 dartagnan / usr / local / apache / bin / httpd -k start -DSSL 12 porthos / usr / local / apache / bin / httpd -k start -DSSL 342 aramis / usr / local / apache / bin / httpd -k start -DSSL 214 athos / usr / local / apache / bin / httpd -k start -DSSL
============>这是我现在有什么,我不想看到:
PID用户命令 1234 nobody / usr / local / apache / bin / httpd -k start -DSSL 12 nobody / usr / local / apache / bin / httpd -k start -DSSL 342 nobody / usr / local / apache / bin / httpd -k start -DSSL 214 nobody / usr / local / apache / bin / httpd -k start -DSSL 244 root / usr / local / apache / bin / httpd -k start -DSSL 334 root / usr / local / apache / bin / httpd -k start -DSSL
将httpd作为其他用户|组运行的方式是更改httpd.conf文件中的用户或组指令。
User apache Group apache
这虽然只会改变你的输出上面的apache ,我猜不是你想要的。
要使httpd作为特定的用户运行,您将不得不为每个用户创build和pipe理configuration文件。 configuration文件应该正确指定用户和组以及httpd进程应该通过Listen指令绑定的端口。 记住只有特权用户可以绑定到端口<1024。 你可以像这样开始
apachectl -f /path/to/aramis.conf -k start -DSSL
注意其他httpd指令,例如VirtualHost可能也需要根据每个用户进行更改。
另外还有EL变种(RHEL,CentOS Scientific Linux等),涉及到SELinux。 你将不得不将每个实例绑定的端口添加到http_port_t组中,例如
semanage port -a -t http_port_t -p tcp 8888
这将允许一个httpd实例绑定到端口8888。
如果用户将使用他们的主目录来提供文件,那么你将不得不允许它与httpd_enable_homedires SELinux布尔
setsebool -P httpd_enable_homedirs on
上面应该允许你configuration每个用户的httpd实例,但是每个用户都必须记住哪个端口用来添加到他们的URL,比如上面的aramis
http://example.com:8888
这一切都很混乱。 为了帮助你的用户,你应该configuration你的主httpd像往常一样在端口80上监听,并作为每个用户实例的反向代理。 然后,当阿拉米斯连接到例如
http://aramis.example.com
主服务器代理是它的阿拉米斯的实例。
你将不得不configurationDNS和其他可能适当的东西。