Estou arrancando os cabelos tentando resolver esse problema de permissões em que os arquivos criados pelo convidado não podem ser acessados no host.
Configurar:
Eu tenho um host Ubuntu 20.04 e um convidado Ubuntu 20.04 rodando através do KVM. Eu tenho uma configuração de montagem compartilhada no modo mapeado . O diretório do host pode ser /home/user/VMs/shared/syncthing/
acessado por meio do guest vm em /hostmount
. Estou montando de dentro do convidado com sudo mount -t 9p -o trans=virtio,version=9p2000.L /hostmount /hostmount
. A VM convidada é iniciada usando virt-manager na conta normal user
.
Status atual:
- O host pode criar arquivos no compartilhamento que podem ser lidos e modificados pelo convidado.
- O convidado pode criar arquivos no compartilhamento, mas eles não podem ser lidos ou modificados pelo usuário do host.
Se eu for touch /hostmount/test.file
de dentro do convidado como usuário regular user
, no lado do host, vejo as seguintes permissões para ls –l test.file
:
-rw------- 1 libvirt-qemu kvm 0 Feb 4 02:51 /home/user/VMs/shared/syncthing/test.file
Situação Desejada:
Claro, eu poderia chown
o arquivo após a criação, mas como faço:
- Forçar a VM convidada a criar arquivos como
user
no host - Conceda
user
no host acesso a arquivos criados por guest vm (libvirt-qemu
no host)
Eu tentei as sugestões desta resposta . Eles funcionam em arquivos pré-existentes, mas não funcionam quando o convidado cria novos arquivos.
Encontrei uma maneira de resolver isso neste post relacionado, embora suponha que exista uma solução mais elegante. Se você estiver executando sua VM a partir da linha de comando, basta adicionar as opções
fmode
edmode
ao comando. Por exemplo:--filesystem "/path/to/share","sharename",mode=mapped,fmode='0777',dmode='0777'
. Isso tornaria o diretório gravável por todo o mundo.Se você estiver usando libvirt xml ou virt-manager, poderá excluir sua pasta compartilhada existente e adicionar este xml logo antes do final do arquivo
<domain>
. Observe que você pode ter que ajustar alguns desses parâmetros, não sei o que todos eles fazem.Se você estiver no Ubuntu como eu, também precisará editar o seu
/etc/apparmor.d/abstractions/libvirt-qemu
e adicionar a linha/path/to/share/{,**} rw,
ao final dele. Isso concede a TODOS os convidados acesso a esse caminho.