如何授予普通用户对网络接口的写访问权限?

如何授予普通用户对网络接口的写访问权限?

我有一个程序可以从网络接口读取和写入数据包,通常我会将自己添加到 sudoers 文件中并像这样运行该程序:

sudo ./bridge

但现在我需要多个用户来运行这个程序,但不给他们 sudo 权限,这样他们就可以像这样运行该程序:

./bridge

有谁知道我怎样才能做到这一点?我在 64 位平台上运行 Scientific Linux 6.1。

答案1

您可以限制在苏多尔斯允许使用 sudo 运行的命令。

编写一个小脚本./bridge,调用sudo ./real-bridge并授予用户通过 sudo 以 root 身份运行 ./real-bridge 的权利。

答案2

我不确定它是否适用于 eth 设备,但这个人可以使用 tun 设备。

$ tail -n1 /etc/udev/rules.d/20-kvm.rules 
KERNEL=="tun",          NAME="net/%k", GROUP="mygoodusers", MODE="0660"

请参阅该行上的 - GROUP="mygoodusers", MODE="0660"。当然,您必须将每个用户放入该组中。

udevadm control --reload-rules

但在重新启动之前,您必须手动 chmod/chown。

答案3

添加 sudo 规则以允许该用户运行您的脚本。运行visudo并将如下内容添加到sudoers文件中:

Defaults!/path/to/bridge env_reset
alice, bill  ALL = (root) /path/to/bridge

请注意,他允许用户将任何参数传递给程序/path/to/bridge。添加""在行尾以禁止传递任何参数。

为了更轻松地进行用户管理,您可能更愿意定义一组有权控制网桥的用户。替换alice, bill为组名称%bridgersbridgers

在程序内部bridge$SUDO_UID是调用 的用户的用户 ID sudo。如果程序要求该用户位于变量中USER,请编写一个小的包装 shell 脚本来设置USER=$SUDO_UID.

相关内容