libvirtd:kvm:用户权限Centos 6

我需要通过用户访问控制他们如何使用虚拟机以及他们可以通过基于KVM的虚拟机pipe理程序上的Virsh来执行哪些操作。

到目前为止,我从http://wiki.libvirt.org了解到,我必须在/etc/libvirt/libvirtd.conf为unix套接字启用unix套接字权限,并创build一个名为libvirtd的新组,并将用户添加到。 所以这一切都很好,但是,与这些用户,我不能看到任何虚拟机,当我这样做

virsh list --all

libvirt.ogr的文档也提到了使用polkit和其他技术。

如果有人能够帮助我使用简单的unix socket permission方法或polikitsudoer方法或任何其他方法的任何工作示例。

我想有一个用户权限的方式,从VIRSH用户只能执行有限的任务,如无法做virsh start但不能virsh destroy

我在使用libvirt wiki的CentOS 6.5上使用PolicyKit成功:

http://wiki.libvirt.org/page/SSHPolicyKitSetup

使它与virsh:一起工作的缺less步骤是将以下内容添加到.bash_profile中:

 if test -x `which virsh`; then export LIBVIRT_DEFAULT_URI=qemu:///system fi 

(这是从这个职位 )

这个设置还允许从远程计算机上的virt-manager进行非常无缝的使用。

为了获得正确的RBAC,你将需要一个比libvirt更复杂的虚拟机pipe理平台,而虚拟机pipe理平台就是为了控制虚拟机的生命周期,而不是真的。 看一看oVirt.org就是一个很好的例子

回答我自己的问题。 最简单和最简单的解决scheme是sudoers。 我们可以用sudoers正则expression式做很多事情。 我只是添加了一个sudoer规则。

保留所有客机机器的名称,以便可以使用某种正则expression式来指定它们。 在我的情况下,我保留所有来宾机器,那些我想由非root用户控制的,从vmname-开始。

下面的规则将允许非root用户启动并获得控制台的虚拟机,并不会允许销毁它。

 Cmnd_Alias KVMCMD = /usr/bin/virsh list --all,/usr/bin/virsh start vmname* Cmnd_Alias KVMBAD = virsh destroy vmname* 

希望这有助于正在寻找类似解决scheme的人。