如何以非 root 用户身份 100% 创建 KVM 来宾?

如何以非 root 用户身份 100% 创建 KVM 来宾?

在具有许多用户的 debian 主机中,我希望允许不同的用户创建自己的虚拟机,彼此完全独立。

我在指南中看到的最接近的相关(非根)方式是连接到qemu:///system虚拟机管理程序。这是所有用户共享的系统管理程序。更重要的是,磁盘映像文件将由 root(或 kvm)用户拥有,这意味着磁盘映像文件位置的整个文件系统路径必须是全局可读的。

出于上述和其他原因,我想纯粹且完全地以非 root 用户身份运行我的虚拟机。那就是作为qemu:///session。所以主要问题是我该怎么做?有我可以使用的指南吗?

我尝试创建新的虚拟网桥 iface,但即使我是 netdev 组的成员,当我执行以下操作时,我也会收到“权限被拒绝”错误:

 virsh -c qemu:///session net-create /etc/libvirt/qemu/networks/mynet.xml

请注意,mynet.xml 就像默认网络一样,但位于不同的子网。

答案1

你使用的不是直接的KVM,而是一个名为libvirt.

virsh您可以通过将用户添加到主机上的libvirtd和组来指定有权访问 libvirt 设置的用户(从而创建虚拟机和运行命令)。kvm

您还可以使用policykit来管理访问,该过程在 libvirt Wiki 中描述:SSHPolicyKit 设置 | Libvirt 维基

答案2

对于 KVM,您需要访问该设备/dev/kvm。如果用户可以读/写该设备,那么他就可以在没有 root 权限的情况下运行基于 KVM 的虚拟机。

在大多数发行版中,kvm组的成员都可以访问此设备,因此您所需要做的就是将用户添加到kvm组中。

相关内容