Meu objetivo é configurar o acesso total de gravação a um compartilhamento 9p para um convidado KVM. O host e o convidado têm os mesmos usuários / grupos com os mesmos IDs. O host e o convidado devem poder gravar no compartilhamento usando os mesmos nomes de usuário e não quero distinguir se um arquivo foi gravado pelo host ou convidado. O processo KVM está sendo executado como root - conjunto I user
e group
para root
em /etc/libvirt/qemu.conf.
Na definição de convidado no host, o compartilhamento é definido da seguinte maneira:
<filesystem type='mount' accessmode='passthrough'>
<source dir='/mnt/storage/data'/>
<target dir='data'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</filesystem>
No convidado, o compartilhamento é montado como:
mount -t 9p -o rw,trans=virtio,version=9p2000.L,msize=262144 data /mnt/data
O problema é que o usuário root no convidado não pode gravar em arquivos / pastas pertencentes ao usuário não root no host. Ainda mais estranhamente, a raiz do convidado pode renomear e excluir esses arquivos. Ou seja, quando na máquina host eu crio um arquivo como um usuário não raiz, simplesmente não consigo editá-lo como raiz do convidado, mesmo que eu possa renomeá-lo e excluí-lo!
Também descobri que onde uma pasta criada no host com usuário não raiz tem suas permissões definidas para 777, a raiz do convidado pode gravar nele (ou seja, criar arquivos nela). Isso, no entanto, não se aplica aos arquivos - eles ainda não podem ser editados, independentemente das permissões.
Tanto o host quanto o convidado estão executando o servidor Linux 3.2.0-4-amd64 # 1 SMP Debian 3.2.51-1 x86_64 GNU / Linux. No Debian, o SELinux está desativado por padrão e eu não o habilitei. Eu tentei todos os três modos de acesso 9p disponíveis ( passthrough
, mapped
e squash
) - sem diferença.
Só me pergunto se há algo que eu possa ajustar para fazê-lo funcionar, ou é apenas um bug?
Observe que há um problema semelhante relatado aqui: Acesso de leitura / gravação para sistemas de arquivos passthrough (9p) com libvirt / qemu? mas, diferentemente desse caso, eu tenho 100% de acesso de gravação onde os arquivos pertencentes ao root são apenas arquivos de usuário não raiz que não consigo gravar, mesmo sendo root no convidado.