+ -
当前位置:首页 → 问答吧 → 问题:slackware下的apache

问题:slackware下的apache

时间:2004-02-09

来源:互联网

请问在slackware下用apache非root用户不可吗?
如果哪位知道非root用户用apache能不能告诉我?
谢谢!

在我的机器下非root用户用apache,我试了:
bash-2.05b$ httpd
Syntax error on line 205 of /etc/apache/httpd.conf:
Cannot load /usr/libexec/mod_vhost_alias.so into server: /usr/libexec/mod_vhost_alias.so: cannot open shared object file: No such file or directory
bash-2.05b$ httpd
fopen: Permission denied
httpd: could not open error log file /var/log/apache/error_log.
error_log:
[Mon Feb 9 00:19:14 2004] [notice] Apache/1.3.28 (Unix) configured -- resuming normal operations
[Mon Feb 9 00:19:14 2004] [notice] Accept mutex: sysvsem (Default: sysvsem)
[Mon Feb 9 00:19:44 2004] [crit] (98)Address already in use: make_sock: could not bind to port 80
[Mon Feb 9 00:21:24 2004] [notice] caught SIGTERM, shutting down

作者: zonzi   发布时间: 2004-02-09

和Slackware没什么关系,apache本身要root用户权限才能执行

作者: nbxmedia   发布时间: 2004-02-09

可以做为系统服务启动撒。。

作者: struggle   发布时间: 2004-02-09

在sun solaris的机器下就能用权限极低的用户来运行apache,但apache是装在~user/apache目录下的,(我试过的)
但我不想再装一遍apache...
我觉得apache最好是用权限极低的用户来运行,因为比较安全,(apache至少是支持script)如果用root来运行的话,那就应该是个root 进程,用root 进程来运行一个script,那就能干很多坏事。。。(纯属个人观点)

作者: zonzi   发布时间: 2004-02-10

struggle大哥,系统服务启动是不是指inetd?
谢谢各位大哥的回复

作者: zonzi   发布时间: 2004-02-10

对头。

启动Apache服务器的另一种方式是inet方式,使用超级服务器inetd监视连接请求并启动服务器。当需要使用inetd启动方式时,便需要更改为这个设置,并屏蔽/etc/rc.d/rc.local/init.d/apache文件,以及更改/etc/inetd.conf并重起inetd,那么Apache就能从inetd中启动了。

两种方式的区别是独立方式是由服务器自身管理自己的启动进程,这样在启动时能立即启动服务器的多个副本,每个副本都驻留在内存中,一有连接请求不需要生成子进程就可以立即进行处理,对于客户浏览器的请求反应更快,性能较高。而 inetd方式要由inetd发现有连接请求后才去启动http服务器,由于inetd 要监听太多的端口,因此反应较慢、效率较低,但节约了没有连接请求时Web服务器占用的资源。因此inetd方式只用于偶尔被访问并且不要求访问速度的服务器上。事实上inetd方式不适合http的突发和多连接的特性,因为一个页面可能包含多个图象,而每个图象都会引起一个连接请求,即使虽然访问人数造成教少,但瞬间的连接请求并不少,这就受到inetd性能的限制,甚至会影响由inetd启动的其他服务器程序。

作者: struggle   发布时间: 2004-02-10

所以一般apache不用inet方式运行,是用一个非常受限制的用户来运行的,不过崭时先用inet方式吧。
我再试试,如果成功的话,再告诉大家

作者: zonzi   发布时间: 2004-02-10

自带apache’的话,不用那么麻烦吧?
root下chmod 755 /etc/rc.d/rc.httpd就可以了
以后apache就会随机器运行

作者: nbxmedia   发布时间: 2004-02-10

一个软件有漏洞是难免的。
常常听到因为apache漏洞而得到root权限的,这些漏洞可能是利用apache用来执行某些服务器的命令(应该是作得到的,因为它的功能很强,),root用户可以执行服务器的所有命令,所以控制了apache=控制了root用户,如果用一个非常受限制的用户的话,那就好多了,入侵者还要用这个非常受限制的用户来偷窃root用户的密码,那就比较难了。
以上只是个人看法,不作数的。
不过是有很多网站不用端口80来作web服务是因为没有用root账户来运行web服务软件(非root用户只能用>1023端口)

作者: zonzi   发布时间: 2004-02-10

非root用户在slackware下运行apache:
先把slackware自带apache给删了,以后下载apache的源代码,./configure --prefix="用户的文件夹"...
编译以后就可以用了(make make install)

作者: zonzi   发布时间: 2004-02-10

引用:
最初由 zonzi 发表
一个软件有漏洞是难免的。
常常听到因为apache漏洞而得到root权限的,这些漏洞可能是利用apache用来执行某些服务器的命令(应该是作得到的,因为它的功能很强,),root用户可以执行服务器的所有命令,所以控制了apache=控制了root用户,如果用一个非常受限制的用户的话,那就好多了,入侵者还要用这个非常受限制的用户来偷窃root用户的密码,那就比较难了。
以上只是个人看法,不作数的。
不过是有很多网站不用端口80来作web服务是因为没有用root账户来运行web服务软件(非root用户只能用>1023端口)
有了漏洞只有赌,但我觉得这始终是一个道高一尺,魔高一丈的问题。

作者: struggle   发布时间: 2004-02-10

zonzi, your understanding of Apache (1.3.x) privilege is wrong. Apache has one single parent process executing as root, and it forks all the child processes that all execute as nobody. Only the child processes listen on the network port (80 in default) and accept network requests. So if one breaks Apache, she will only get nobody privilege. To get the privilege of root, she has to exploit other vulnerabilities in the system.

Besides, for the error message on your first post, you need to change the path of mod_vhost_alias.so and all other modules in httpd.conf to /usr/libexec/apache/. Recently Patrick has changed the location of apache modules. Check the ChangeLog.txt please.

作者: terminator   发布时间: 2004-02-12