我正在尝试使用Linux Capabilities来允许程序(httpd)以非特权用户的身份绑定到特权端口(443)。
我使用这个命令设置程序的function:
setcap CAP_NET_BIND_SERVICE+eip httpd
然后我证实了这个function已经成功设置…
getcap httpd
打印…
httpd = cap_net_bind_service+eip
当我尝试启动程序时,它将退出,因为它无法绑定到所需的端口。 我用strace发现了这个:
strace -f httpd显示“权限被拒绝,无法绑定,closures”:
... write(2, "(13)Permission denied: AH00072: "..., 85(13)Permission denied: AH00072: make_sock: could not bind to address [redacted XXXX]:443) = 85 close(3) = 0 write(2, "no listening sockets available, "..., 46no listening sockets available, shutting down ...
我应该做些什么来使Linuxfunction正常工作,并允许程序绑定到特权端口?
快速search表明,使用nosuid标志的安装可以防止function运行,并且证实它不会干扰这种情况。