在不硬编码 sudo 密码的情况下授予程序网络接口权限的正确方法是什么?

在不硬编码 sudo 密码的情况下授予程序网络接口权限的正确方法是什么?

我正在开发一个小工具来记录 GNU/Linux 中的一些传感器。一些传感器通过 UDP 传输数据,所以我使用利布汀斯捕捉它。

我想从网络应用程序控制传感器的启动/停止,但监听网络接口需要 root 权限。我不喜欢硬编码 sudo 密码以在每次单击按钮时运行嗅探器的想法,我宁愿避免以 root 身份运行所有进程,但肯定必须是授予接口访问权限的正确方法一个进程,以便可以从 python 或 bash 脚本开始嗅探。

有人可以给我任何提示吗?

答案1

setcap 命令解决了这个问题:

sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip <binaryFile>

相关内容