【发布时间】:2011-02-11 14:18:54
【问题描述】:
我想让一个 Python 程序开始侦听端口 80,但之后在没有 root 权限的情况下执行。有没有办法删除 root 或在没有它的情况下获取端口 80?
【问题讨论】:
-
在现代 Linux 上,你只需要能力 CAP_NET_BIND_SERVICE 来绑定到端口 80,你不需要是 root,甚至在应用程序启动时也不需要。 Capabilities 是 POSIX 标准 1003.1e,它是将所有强大的 root 权限划分为一组不同的权限。参见:python-cap-ng 和 /sbin/setcap、/sbin/getcap(这些相当于 chmod setuid 和 ls -l)
-
对于 Python2 和其他解释器来说,获得能力是你要小心的部分——libcap-ng 可以降低上限,但它不会授予它们。对 Ian 所引用问题的回答是一种相对安全的方式,可以为特定项目一次发放一个上限:stackoverflow.com/a/21895123/1724577
标签: python linux unix permissions root