linux sudo su 的问题

5毛 发布于 2013/03/19 09:50
阅读 449
收藏 0

现有普通用户covapp. 使用这个用户启动apache,启动不了,加个sudo就可以执行,请问为什么?我的意思是,sudo究竟干了什么让我尅顺利执行?我man的结果是:sudo, sudoedit - execute a command as another user

看我的操作:

其一,

[covapp@station9 bin]$ pwd
/a01/software/apache/bin
[covapp@station9 bin]$ ll
total 1876
-rwxr-xr-x 1 covapp covapp    3473 Jun  8  2012 apachectl
[covapp@station9 bin]$ ./apachectl start
(13)Permission denied: make_sock: could not bind to address [::]:180
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:180
no listening sockets available, shutting down
Unable to open logs
这个是无法启动的,报错Permission denied: make_sock:

其二,

[covapp@station9 bin]$ sudo ./apachectl start
[covapp@station9 bin]$ ps -ef |grep httpd
root      2122     1  0 09:40 ?        00:00:00 /a01/software/apache-2.2.14-proxy/bin/httpd -k start
covapp    2124  2122  0 09:40 ?        00:00:00 /a01/software/apache-2.2.14-proxy/bin/httpd -k start
covapp    2125  2122  0 09:40 ?        00:00:00 /a01/software/apache-2.2.14-proxy/bin/httpd -k start
covapp    2127  2122  0 09:40 ?        00:00:00 /a01/software/apache-2.2.14-proxy/bin/httpd -k start
covapp    2129  2122  0 09:40 ?        00:00:00 /a01/software/apache-2.2.14-proxy/bin/httpd -k start
这个就是运行的,程序正常。

其三,

[test@station9 bin]$ sudo -u covapp /a01/software/apache/bin/apachectl start
(13)Permission denied: make_sock: could not bind to address [::]:180
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:180
no listening sockets available, shutting down
Unable to open logs
这是用另外一个用户来使用sudo命令企图执行启动命令,失败。

有没有linux高手来指导一下?或者帮忙搜索一下答案?google到现在都没google到个正确的解释。先拜谢了。

加载中
0
5毛
5毛

总结一下这个问题,希望对大家有帮助,楼上两位是对的。

一,apache最好使用root权限来运行,启动后它可能需要切换用户组啊,forks子进程等等一系列特权动作,一般用户没有经过相应的全面的权限设置,在这个机器里面可能满足不了这些需求。

二,apache配置文件里面的user、group不要设为root,会增加风险。

三,port: 1024的端口号起,才可以被其他用户使用,否则会报错Permission denied: make_sock

thank you guys!

0
Narky
Narky
apache 必须要以root身份启动服务
0
y
yonng
启动HTTP服务时要开启80端口,Linux下80端口是特权端口(好像是小于500还是1024以下的端口,具体不太清楚了),只有root权限才能开启。
5毛
5毛
回复 @Narky : 1024....这是cler么...
5毛
5毛
回复 @Gallant : 对对对, 楼上的也说的是对的,必须以root运行apache,然后apache会folks其他的一些子进程,比如在httpd.conf里面定义的user,就是使用root切换到这个user进行实际的请求处理。
Narky
Narky
1024以下的端口
y
yonng
回复 @5毛 : 这个可能只是其中需要root权限的一个问题,但是apache还有可能涉及到系统的其它管理方面,此时也可能需要root权限。
5毛
5毛
对对对,我也看出来了好像是这个问题,我试试更高序列的端口看看
返回顶部
顶部