如何以非 root 用户身份设置 Linux 网络命名空间?

如何以非 root 用户身份设置 Linux 网络命名空间?

我为 VPN 设置了一个网络命名空间,这样并非所有流量都会通过 VPN。
当我输入以下内容时,它工作正常:

sudo ip netns exec vpn firefox

现在,所有 Firefox 流量都按预期通过 VPN。问题是每个以这种方式启动的程序都具有 root 权限。
我尝试这样做:

sudo ip netns exec vpn sudo -u user firefox

虽然应用程序启动正常,但它“离开”了命名空间并且不再使用 vpn。

有人可以帮忙吗?

答案1

进程不能“离开”命名空间——setns(2)函数需要root权限。

但很可能您已经有一个在命名空间之外运行的现有 Firefox 实例。每当您第二次运行 Firefox 时,它只会要求现有实例打开一个新窗口。

您可以通过使用单独的 Firefox 配置文件来避免这种情况,例如firefox -profile /tmp/testfox

相关内容