我想允许普通用户创建 161 端口。其中一种方法是:
setcap 'cap_net_bind_service=+ep' /home/user/bin/my_program
但这种方式对我来说并不合适,因为它setcap
破坏了‘RPATH’,所以我无法启动‘my_program’。
也许有什么方法可以解决这个问题。是否可以为 ala 用户提供此权限?
答案1
听起来你想要的是授权绑定。我在这里链接的是 Wikipedia 页面,而不是主页,因为主页只是官方存储库的 gitweb 页面,因此对最终用户来说没什么用。简而言之,authbind 使用 LD_PRELOADbind()
通过 SUID 辅助程序来间接调用,从而允许程序绑定保留端口。确保将对 authbind 的访问限制在您信任的帐户中,并记住它将允许任何可以访问它的用户绑定到任何特权端口。
或者,如果您根本不关心安全性,则可以将这一行添加到相关系统的 sysctl 配置中:
net.ipv4.ip_unpriveleged_port_start = 0
从下次重新启动开始,这将从系统中删除特权端口的整个概念。
但是,请确保您非常小心地执行此操作。许多低编号端口用于核心网络基础设施,未经授权的用户访问这些端口很容易导致滥用。如果您使用 sysctl 方法,请特别小心,因为这将允许任何人绑定到任何港口。