我在我的 Debian 上使用非特权帐户启动了命名服务:
useradd named
chown -R named:named /etc/bind/
named -u named
这是受支持并且有效的。但我开始想知道普通用户“named”如何在不成为 root 的情况下监听端口 53?
我已经在我的 Debian 上检查过:
请让我知道它是如何工作的,因为我无法在我的 debian 中的普通帐户上监听特权端口。
检查
setcap
https://www.man7.org/linux/man-pages/man8/setcap.8.html
可以添加诸如
CAP_NET_BIND
之类的功能,以便能够以用户身份绑定到端口 53 https://www.man7.org/linux/man-pages/man7/capability.7.html
这就是
bind9
又名 named
: 中使用的内容
git clone https://github.com/isc-projects/bind9.git
cd bind9
ack CAP_NET
给出:
bin/named/os.c
152: SET_CAP(CAP_NET_BIND_SERVICE);
213: SET_CAP(CAP_NET_BIND_SERVICE);
man 7 capabilities
:
CAP_NET_BIND_SERVICE
将套接字绑定到 Internet 域特权端口(端口号小于 1024)。