KVM 게스트의 9p 공유에 대한 전체 쓰기 액세스를 설정하려고합니다. 호스트와 게스트 모두 동일한 ID를 가진 동일한 사용자 / 그룹을 갖습니다. 호스트와 게스트 모두 동일한 사용자 이름을 사용하여 공유에 쓸 수 있어야하며 호스트 또는 게스트가 파일을 작성했는지 여부를 구별하고 싶지 않습니다. I 세트 -가 KVM 프로세스는 루트로 실행 user
과 group
에 root
/etc/libvirt/qemu.conf있다.
호스트의 게스트 정의에서 공유는 다음과 같이 정의됩니다.
<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>
게스트에서 공유는 다음과 같이 마운트됩니다.
mount -t 9p -o rw,trans=virtio,version=9p2000.L,msize=262144 data /mnt/data
문제는 게스트의 루트 사용자가 호스트에서 루트가 아닌 사용자가 소유 한 파일 / 폴더에 쓸 수 없다는 것입니다. 더 이상하게도 게스트의 루트는 그러한 파일의 이름을 바꾸고 삭제할 수 있습니다. 즉, 호스트 컴퓨터에서 루트가 아닌 사용자로 파일을 만들면 이름을 바꾸고 삭제할 수 있어도 게스트의 루트로 파일을 편집 할 수 없습니다!
또한 루트가 아닌 사용자로 호스트에서 생성 된 폴더의 권한이 777로 설정되어 있으면 게스트의 루트가 폴더에 쓸 수 있습니다 (즉, 파일을 생성 할 수 있음). 그러나 이것은 파일에는 적용되지 않으며 권한에 관계없이 여전히 편집 할 수 없습니다.
호스트와 게스트 모두 Linux 서버 3.2.0-4-amd64 # 1 SMP Debian 3.2.51-1 x86_64 GNU / Linux를 실행하고 있습니다. 데비안에서 SELinux는 기본적으로 비활성화되어 있으며 활성화하지 않았습니다. 나는 모든 세 가지 9P 액세스 모드를 시도하지 ( passthrough
, mapped
및 squash
) - 차이.
작동시키기 위해 조정할 수있는 것이 있는지 궁금하거나 그냥 버그입니까?
libvirt / qemu를 사용하여 통과 (9p) 파일 시스템에 대한 읽기 / 쓰기 액세스 권한이 여기에보고되어 있습니다. 그러나이 경우와 달리 루트가 소유 한 파일에 100 % 쓰기 액세스 권한이 있으며 게스트가 루트 인 경우에도 쓸 수없는 루트가 아닌 사용자 파일입니다.