非root用户使用1024以下端口

Posted chenjunjie12321

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非root用户使用1024以下端口相关的知识,希望对你有一定的参考价值。

 
如果你有一个最新的内核,确实有可能使用它作为非root用户启动服务,但绑定低端口。最简单有效的办法是:
#setcap ‘cap_net_bind_service=+ep‘ /path/to/program

 执行了该命令后,该文件程序将会具有CAP_NET_BIND_SERVICE功能,setcap在debian软件包libcap2-bin中,至于具体的功能感兴趣可以自己查阅。

现在要注意的是:

  1. 您的内核版本至少为2.6.24

  2.文件不能是脚本。也就是说你必须将CAP_NET_BIND_SERVICE功能应用到可执行文件本身,而不是脚本中指向的其他应用。如果赋予了该文件CAP_NET_BIND_SERVICE能力,其他应用滥用用这个文件就可能在安全性上造成隐患。

  3.如果你的程序使用自己的... / lib /的共享库,而Linux将在任何具有像setcap或suid这样的特权提升的程序上禁用LD_LIBRARY_PATH,将导致不能使用。

 

参考:

https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-on-linux

LD_LIBRARY_PATH作用 https://www.douban.com/note/520942662/

端口转发、setuid,在root目录下启动应用 https://www.cnblogs.com/fatt/p/5019322.html

 

应用实例:

nginx配置文件,监听80端口

 技术分享图片

直接在非root用户下启动nginx服务,发现启动不了,提示非root用户没有使用80端口的权利。

技术分享图片

使用setcap
在root用户下执行命令:
#setcap cap_net_bind_service=+eip
 技术分享图片
提示:注意文件的颜色变化
 
再次启动nginx服务:
技术分享图片
 注:如果不使用了,使用如下命令即可:
#setcap -r 文件名

  

 

以上是关于非root用户使用1024以下端口的主要内容,如果未能解决你的问题,请参考以下文章

linux普通用户使用1024以下的端口(80)

linux普通用户使用1024以下的端口(80)

非root启动80端口

tomcat非root用户启动443或80端口

如何配置linux可以让普通用户使用80端口或1024以下的端口

在MacOS上使用1024以下端口