今天我学到了一些新的东西,我想和你分享。我知道监听低于 1024 的端口需要特殊权限,要做到这一点,你必须是sudoers。但是使用 sudo 运行应用程序并不是一种完美的方式,因为这样应用程序几乎可以对您的操作系统执行任何操作,从而导致意外结果(您肯定不希望应用程序通过rm -rf删除所有文件)。
想象一下,你编写了一个 Golang http 服务器,并希望它监听 80 端口。要授予此权限,你可以在 unix/linux 系统上使用setcap命令:
sudo setcap cap_net_bind_service=+ep /your/executable/file/path
这样你就只给了你的可执行文件一个特权,仅此而已,确保不会发生危险的事情。
cap_net_bind_service
是您可以使用的众多功能之一。要查看其他功能类型:
man capabilities
而已 :)