如何允许非 root 用户监听特权端口?

如何允许非 root 用户监听特权端口?

我想让 syslog 在我的 Linux 机器上以非 root 用户身份运行。这样它就无法绑定到端口 514 - 因为这是一个特权端口。有什么方法可以授予非管理员用户“foo”监听端口 514 的能力吗?

答案1

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

需要一个不太古老的 Linux 内核(2.6.24或更高版本)

答案2

您可以配置rinetd(在大多数(如果不是全部)发行版的标准存储库中可用)监听端口 514 并将连接转发到其他端口(大于 1024,例如 1514)。这样,非特权用户进程可以监听 1514 并转发连接,rinetd因此它似乎正在监听 514。

但这仅适用于 TCP 连接。如果您需要以这种方式支持 UDP(或其他任何协议)以及 TCP,那么您可以使用 iptables 转换规则来实现相同的效果。

答案3

刚刚在这里发现了一个非常好的讨论:https://stackoverflow.com/questions/413807/是否有办法让非根进程绑定到特权端口1024-on-li

看起来不容易

答案4

监听非特权端口并使用 iptables dnat 重定向连接。

相关内容