开发者社区> 问答> 正文

linux sudo su 的问题?报错

现有普通用户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到个正确的解释。先拜谢了。

展开
收起
爱吃鱼的程序员 2020-06-22 21:11:40 580 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

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

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

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

    thankyouguys!

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

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载