KVM 게스트는 비 루트 소유의 9p 공유에 쓸 수 없습니다


14

KVM 게스트의 9p 공유에 대한 전체 쓰기 액세스를 설정하려고합니다. 호스트와 게스트 모두 동일한 ID를 가진 동일한 사용자 / 그룹을 갖습니다. 호스트와 게스트 모두 동일한 사용자 이름을 사용하여 공유에 쓸 수 있어야하며 호스트 또는 게스트가 파일을 작성했는지 여부를 구별하고 싶지 않습니다. I 세트 -가 KVM 프로세스는 루트로 실행 usergrouproot/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, mappedsquash) - 차이.

작동시키기 위해 조정할 수있는 것이 있는지 궁금하거나 그냥 버그입니까?

libvirt / qemu를 사용하여 통과 (9p) 파일 시스템에 대한 읽기 / 쓰기 액세스 권한이 여기에보고되어 있습니다. 그러나이 경우와 달리 루트가 소유 한 파일에 100 % 쓰기 액세스 권한이 있으며 게스트가 루트 인 경우에도 쓸 수없는 루트가 아닌 사용자 파일입니다.


2
정보를 위해서, 나는 이것이 올바르게 작동하는 것을 결코 얻지 못했고 이러한 동일한 문제를 모두 겪었습니다. 결과적으로 p9 파일 시스템 패스 스루 구현은 최근 qemu / libvirt 버전에서 더 이상 사용되지 않습니다.
스풀러

2
마찬가지로 여기. 빨간 모자는 9p가 프라임 타임 준비되지 않았다고 생각하는 것 같습니다 .
Diagon

답변:


0

공유 디렉토리의 acl과 같은 파일 시스템 추가 속성을 확인할 수 있습니까? 권한 문제가 의심됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.