como posso criar um convidado KVM 100% como um usuário não root?

2

Em um host debian com muitos usuários, desejo permitir que usuários diferentes criem suas próprias VMs, completamente independentes um do outro.

A maneira relevante mais próxima (não-raiz) que tenho visto nos guias é conectando-se ao hypervisor qemu:///system . Este é o hipervisor do sistema que é compartilhado entre todos os usuários. O que é mais o arquivo de imagem de disco será de propriedade do usuário root (ou kvm), o que significa que todo o caminho do sistema de arquivos para o local do arquivo de imagem de disco deve ser legível por todo o mundo.

Por motivos acima e por outros motivos, quero executar minhas VMs pura e completamente como usuário não raiz. Isso é como qemu:///session . Então a questão principal é como eu faço isso? Há algum guia que eu possa usar?

Eu fui tão longe quanto tentar criar uma nova bridge virtual iface, mas mesmo sendo membro do grupo netdev, recebo erros de "permissão negada" quando faço o seguinte:

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

note que o mynet.xml é como a rede padrão, mas em uma sub-rede diferente.

    
por nass 03.10.2014 / 16:15

3 respostas

4

O que você está usando não é o KVM diretamente, mas uma biblioteca de gerenciamento chamada libvirt .

Você pode especificar um usuário que terá acesso à configuração do libvirt (e, assim, criar VMs e executar praticamente os comandos virsh ) adicionando os usuários aos grupos libvirtd e kvm no host.

Você também pode usar policykit para gerenciar o acesso, o procedimento é descrito no Wiki libvirt: SSHPolicyKitSetup | Wiki do Libvirt

    
por 03.10.2014 / 18:33
2

Para o KVM, você precisa acessar o dispositivo /dev/kvm . Se o usuário puder ler / gravar neste dispositivo, ele poderá executar máquinas virtuais baseadas no KVM sem privilégios de administrador.

Na maioria das distribuições, os membros do grupo kvm têm acesso a este dispositivo, portanto, tudo o que você precisa fazer é adicionar o usuário ao grupo kvm .

    
por 14.11.2017 / 01:26
-3

Você não pode. O KVM requer privilégios ROOT para acessar encadeamentos de hardware de baixo nível em sua CPU.

Como eu sei disso? Porque trabalhei com o código-fonte do KVM para contribuir com o projeto FaiKVM, o projeto Instalação totalmente automática baseada em kernel baseado em máquina virtual. Nós modificamos o código-fonte para suportar um kernel virtual X64 dentro de um espaço de usuário de 32 bits. Essa é a essência disso.

    
por 03.10.2014 / 16:52