在具有许多用户的 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
组中。