Estou com o objetivo de configurar o acesso completo de gravação a um compartilhamento de 9p para um convidado do KVM. Host e guest 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 por host ou convidado. O processo kvm está rodando como root - eu configurei user
e group
para root
em /etc/libvirt/qemu.conf.
Na definição de convidado no host, o compartilhamento é definido da seguinte forma:
<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 raiz 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-root, eu simplesmente não posso editá-lo como a raiz do convidado, mesmo que eu possa renomeá-lo e excluí-lo!
Também descobri que quando uma pasta criada no host em um usuário não raiz tem suas permissões definidas como 777, a raiz do convidado pode gravar nela (isto é, criar arquivos nela). Isso, no entanto, não se aplica a arquivos - eles ainda não podem ser editados independentemente das permissões.
Tanto o host quanto o guest 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.
Estou apenas imaginando se há algo que eu possa ajustar para que funcione ou é apenas um bug?
Observe que há um problema semelhante relatado aqui: Acesso de leitura / gravação para sistemas de arquivos de passagem (9p) com libvirt / qemu? mas ao contrário desse caso, eu tenho 100% de acesso de gravação, onde os arquivos de propriedade do root, são apenas arquivos de usuário não-root que eu não posso escrever, mesmo sendo root no guest.