O convidado KVM não pode gravar em partes 9p de propriedade de não-raiz

10

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.

    
por Greendrake 06.12.2013 / 17:24

0 respostas