Xen acesso libvirt para usuário não root

2

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).

    
por Dave C 27.04.2015 / 02:14

2 respostas

1

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

    
por 01.05.2015 / 11:12
0

Isso funcionou para mim:

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"
auth_unix_rw = "none"
    
por 10.01.2018 / 10:25