本文最后更新于 1454 天前,其中的信息可能已经有所发展或是发生改变。
setcap 'cap_net_bind_service=+ep' /file
引用
非root用户使用1024以下端口
https://www.cnblogs.com/chenjunjie12321/p/9226279.html
如果你有一个最新的内核,确实有可能使用它作为非root用户启动服务,但绑定低端口。最简单有效的办法是:
1
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,将导致不能使用。
参考:
LD_LIBRARY_PATH作用 https://www.douban.com/note/520942662/
端口转发、setuid,在root目录下启动应用 https://www.cnblogs.com/fatt/p/5019322.html