您可以在 Linux 中为每个用户创建网络接口吗?

您可以在 Linux 中为每个用户创建网络接口吗?

所以Linux在管理每个用户的权限方面做得很好。大家都知道文件和进程管理。

但是是否也可以创建虚拟专用网络接口?

假设 Linux 用户 John Doe (jdoe) 想要测试网络软件,但不想成为 root 并干扰实际的 netif。您可以创建一个仅属于 jdoe 的接口吗?例如 eth0、eth1 和 ethJdoe,使 ethJdoe 属于 jdoe。

答案1

创建一个命令,让 jdoe 运行“ifconfig eth0 [whatever]”(例如 shell 脚本)让他使用 sudo 来运行该命令。如果您担心他做错任何事,请添加代码以防止管道等被传递到命令上。

这比入侵网络堆栈更容易。

答案2

据我所知,Linux 中没有。什么网络软件依赖于他做ifup什么ifdown?我知道我几乎不了解您的问题,但这听起来像是虚拟机映像的工作。

一些微内核的设计允许用户级的“驱动程序”执行此类操作,但目前还没有真正的微内核能够做到这一点并真正运行有用的软件。Hurd 一直有这样的设计作为其设计很酷的例子,但 Hurd 除了用于研究目的外,仍然没有任何用处。

答案3

在 Linux(最新版本)中,你可以定义一个网络命名空间与主机 PC 的网络设施隔离。然后,您需要将命名空间连接到 主要的主机的网络,这有点复杂,但你不必让用户这样做,系统管理员可以这样做。所以是的,这是可以做到的。有关更多信息,你可以先查看命名空间取消共享命令。出于实际原因,使用某种隔离/虚拟化方案来执行此操作更有意义。其中一些系统基于用户命名空间范例构建

相关内容