我可以从 C Linux 程序内部添加 iptables 规则吗?

the*_*ure 5 linux c root iptables capabilities

我需要从 C Linux 程序内部添加一个 iptables 规则。

我应该怎么做?我需要 root 权限还是可以只授予一些功能?

我尝试授予 CAP_NET_RAW+iep 并使用 popen()、system() 和 execve() 来设置 iptables,但它不起作用。

当我 sudo 但我不想授予 root 权限时,它显然有效。

谢谢你。

Ras*_*aty 1

您不需要向用户授予 root 权限。您可以编辑 sudoers 文件,并且可以限制用户可以通过 sudo 运行哪些命令。另外,您可以在 sudoers 文件中提供 NOPASSWD 选项。

MY_USER_NAME  ALL = NOPASSWD: /sbin/iptables
Run Code Online (Sandbox Code Playgroud)

编辑 sudoers 文件后,MY_USER_NAME 可以运行“sudo iptables”命令。并且无法运行任何其他需要权限的命令。

使用“visudo”命令编辑 sudoers 文件。