IT技术之家 centos7相关 centos7 非root用户使用1024以下端口

    centos7 非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 文件名
    

     

    1、本站提供的软件均为 “试用版” 或者 “免费版”,仅供学习和研究使用
    2、友情提醒:内容全部搜集自网络,安装教程参照压缩包内的Readme.txt编写
    3、因使用本站软件产生的法律责任由使用者自行承担,本站不承担任何连带责任。
    4、如有内容不慎侵犯了您的权益,请速与我联系!
    如有转载请注明出处:https://www.ittel.cn/archives/1189.html
    guest
    0 评论
    内联反馈
    查看所有评论
    联系我们

    联系我们

    QQ:877196754

    在线咨询: QQ交谈

    邮箱: ittel@qq.com

    工作时间:周一至周日,8:00-21:00
    返回顶部
    0
    希望看到您的想法,请您发表评论x