如何允许非root用户在特权端口上侦听?

我希望系统日志作为我的Linux机器上的非root用户运行。 这使得它无法绑定到端口514 – 因为这是一个特权端口。 有什么办法可以授予非pipe理员用户“foo”在端口514上侦听的能力吗?

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

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

您可以configurationrinetd (在大多数(如果不是全部的话)发行版的标准存储库中可用)侦听端口514并将连接转发到某个其他端口(在1024以上,比如说1514)。 这样非特权用户进程可以监听1514,而rinetd将转发连接,所以它似乎在514上监听。

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

刚刚在这里find了一个非常好的讨论: https : //stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-在利

看起来不容易

听一个非特权端口,并使用iptables dnat来redirect连接。