Acho que você pode fazer assim:
em /etc/libvirt/libvirtd.conf
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
auth_unix_rw = "none"
Depois disso, reinicie o daemon libvirtd
Instalei o Xen e o libvirt em uma máquina CentOS 6.6. Todas as ferramentas (virt-manager, virsh etc) funcionam perfeitamente como root (diretamente ou via sudo), mas não posso permitir que outro usuário se conecte (falha ao conectar / erro do DBus).
Minha configuração
Eu segui o procedimento para permitir o acesso do usuário criando um grupo e permitindo isso através do polkit, assim:
groupadd virtadmin
usermod -a -G virtadmin davec
Eu também adicionei-me ao grupo KVM (uma sugestão encontrada em algum lugar). O grupo é criado e eu estou nele como saídas de id:
uid=500(davec) gid=500(davec) groups=500(davec),36(kvm),501(virtadmin)
Para permitir isso no polkit, adicionei o conteúdo do arquivo /etc/polkit-1/localauthority/50-local.d/50-libvert-remote-access.pkla:
Remote libvirt SSH access]
Identity:unix-group:virtadmin
Action:org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
Após isso não funcionar, alguns googling me disseram que as versões mais novas do polkit (yum me diz que eu tenho 0,96) usam uma abordagem baseada em regras, então eu também criei uma pasta /etc/polkit-1/rules.d e adicionou o arquivo 80-libvirt-manage.rules contendo:
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
subject.local &&
subject.active &&
subject.isInGroup("virtadmin")) {
return polkit.Result.YES;
}
});
Agora, pode ser que haja algum problema com isso, mas não consigo encontrar um registro ou, de alguma forma, ele parece testar / verificar / observá-los.
Então, de acordo com os documentos que encontrei, com esse usuário de configuração, o davec deve ser capaz de acessar o libvirt e executar o virsh ou o virt-manager.
O erro
[davec@polar rules.d]$ virsh -c xen:///
error: failed to connect to the hypervisor
error: internal error: DBus support not compiled into this binary
Este é exatamente o mesmo erro que o virt-manager dá quando tento conectar-me.
A maioria das informações on-line sobre o erro DBus refere-se a um problema com o hypervisor em execução / qualquer pessoa conectada, no entanto, o root se conecta perfeitamente.
[davec@polar rules.d]$ sudo virsh -c xen:///
Welcome to virsh, the virtualization interactive terminal.
Exatamente o mesmo se aplica para conexões SSH (o que não é surpresa pois o SSH apenas conecta eu acredito quando você usa um xen + ssh URI), o root funciona não-root mas o usuário adicionado ao grupo não.
Sem dúvida, é algo simples e estou sendo um idiota, mas ... depois de alguns dias o Google não sendo meu amigo; qualquer ajuda verdadeiramente apreciada.
A resposta
Veja abaixo a resposta correta (e aceita) do c4f4t0r, que ganha a recompensa, mas apenas para informações de qualquer pessoa que esteja lendo isso, é nada a ver com o polkit que não parece estar configurado / compilado / trabalhando com meu libvirtd.
Foi um problema de permissões embutidas (permissões de soquete).
Isso funcionou para mim:
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"
auth_unix_rw = "none"