免责声明:我知道如何通过使用privbind
或某些iptables
REDIRECT 来运行监听 <1024 端口的守护进程。或者更笼统地说,如何使守护进程在通常不在那里运行的特权端口上可用。
这个问题本身是一个元问题。
问题:为什么小于 1024 的端口通常只保留给 root 用户。从实用的角度来看,我希望能够直接告诉守护进程在哪个端口上监听,而不必关心 root 权限。我越想越觉得,这种“安全性”只是历史遗留问题。
我真正想要的是类似于sysctl -w net.ipv[46].conf.port.80=www-data
(类似的东西,我希望这个想法能够实现)的 sysctl。
这样,就可以保持“当前安全级别”,但仍允许任意用户监听较低的端口。Linux 功能(CAP_NET_BIND_SERVICE
)是朝着正确方向迈出的第一步 - 至少在我看来是这样 - 但考虑到我习惯于端口 <1024 是特殊的,我犹豫着是否要完全放弃限制。我只是看不出这种情况的客观原因。
请有人启发我:)
笔记:是的,我读过一些类似的标题,但我对“你不应该这样做”不太满意。必须费尽周折才能让 apache 监听端口 80,而它所做的只是启动然后root
放弃特权,这是不必要的(至少我认为如此)。为什么我不能让它以普通用户身份运行并完成它的工作。这样,特权升级错误甚至不允许 root 特权。所有特权都是www-data
(或所选发行版上的用户)的特权