栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有没有办法让非根进程绑定到Linux上的“特权”端口?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有没有办法让非根进程绑定到Linux上的“特权”端口?

好的,感谢指出能力系统和

CAP_NET_BIND_SERVICE
能力的人们。如果您使用的是最新内核,则确实可以使用它以非root用户身份启动服务,但绑定低端口。简短的答案是您这样做:

setcap 'cap_net_bind_service=+ep' /path/to/program

然后任何时间

program
执行,此后它将具有此
CAP_NET_BIND_SERVICE
功能。
setcap
在debian软件包中
libcap2-bin

现在需要注意的是:

  1. 您将至少需要2.6.24内核
  2. 如果您的文件是脚本,则无法使用。(即,使用#!行启动解释器)。据我所知,在这种情况下,您必须将功能应用于解释器可执行文件本身,这当然是安全的噩梦,因为使用该解释器的任何程序都将具有该功能。我找不到解决此问题的任何简单明了的方法。
  3. Linux将在
    program
    具有更高特权的任何磁盘上禁用LD_LIBRARY_PATH,例如
    setcap
    suid
    。因此,如果您
    program
    使用自己的
    .../lib/
    ,则可能必须考虑其他选项,例如端口转发。

资源:

  • 功能(7)手册页。如果要在生产环境中使用功能,请仔细阅读本章。关于如何在exec()调用之间继承功能的方式,确实存在一些非常棘手的细节,在此进行详细介绍。
  • setcap手册页
  • “绑定低于1024的端口,而在GNU / Linux上没有root”:该文档首先将我指向
    setcap

注意:RHEL首先在v6中添加了它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371937.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号