Estou tentando criar um diretório totalmente disponível para os sistemas host e guest de uma máquina virtual virt-manager / libvirt / QEMU / KVM, com permissões de leitura, gravação e execução para usuários não-root de ambos sistemas. Ambos os sistemas operacionais são Debian - o host é Wheezy, o convidado, Jessie. Fui bem-sucedido principalmente, com uma exceção: os arquivos criados no sistema operacional convidado e o diretório compartilhado não podem ser usados por usuários não-root no sistema host.
O problema que estou correndo é que ao criar novos arquivos dentro do diretório compartilhado no sistema operacional convidado, o virt-manager / libvirt os cria com suas permissões configuradas para 700 (acesso total para o proprietário - neste caso, um usuário chamado libvirt-qemu
e nenhuma permissão para outros usuários ou grupos. Essencialmente, isso é equivalente a umask de sessão do usuário libvirt-qemu sendo configurada como 077. Isso torna esses arquivos inacessíveis aos usuários não-root do host.
A solução que estou tentando implementar é ter o usuário libvirt-qemu
e os outros usuários relevantes no sistema operacional host todos pertencentes a um novo grupo de usuários secundário chamado vmshares
e ter o diretório compartilhado de propriedade pelo grupo vmshares
, com o bit SGID configurado para que todo o seu conteúdo também seja de propriedade de vmshares
- que deve realizar o que eu quero. No entanto, não consigo obter virt-manager para criar novos arquivos dentro do diretório compartilhado do host com qualquer umask, exceto 077, quando eu precisar usar 007, para que esses arquivos também concedam permissões completas aos membros do grupo vmshares
.
Eu tentei criar um novo arquivo, /etc/pam.d/libvirt com o seguinte conteúdo, para implementar a política umask para o usuário libvirt-qemu:
libvirtd session requisite pam_umask.so umask=0007
Eu também tentei criar um arquivo .profile
em / var / lib / libvirt / com apenas a seguinte linha:
umask 007
Eu também tentei adicionar essa linha perto do topo do script de init libvirt-bin em /etc/init.d/libvirt-bin.
Ovirt-manager / libvirt parece ignorar completamente tudo isso.
Por favor, como posso alcançar meu objetivo de ter um diretório compartilhado totalmente utilizável nos sistemas host e guest?