호스트 및 게스트 공유 디렉터리에서 적절한 권한을 얻으려면 libvirt/virt-manager의 umask를 설정하세요.

호스트 및 게스트 공유 디렉터리에서 적절한 권한을 얻으려면 libvirt/virt-manager의 umask를 설정하세요.

virt-manager/libvirt/QEMU/KVM 가상 머신의 호스트 및 게스트 시스템 모두에서 완전히 사용할 수 있고 두 시스템 모두에서 루트가 아닌 사용자에 대한 읽기, 쓰기 및 실행 권한을 갖는 디렉터리를 생성하려고 합니다. 두 운영 체제 모두 Debian(호스트용 Wheezy, 게스트용 Jessie)입니다. 한 가지 예외를 제외하면 대부분 성공했습니다. 게스트 OS에서 생성된 파일과 공유 디렉터리는 호스트 시스템의 루트가 아닌 사용자가 액세스할 수 없었습니다.

내가 겪고 있는 문제는 게스트 OS의 공유 디렉터리에 새 파일을 생성할 때 해당 파일을 생성하기 위한 virt-manager/libvirt의 권한이 700으로 설정된다는 것입니다(소유자의 전체 액세스 - 이 경우 사용자 이름은 다음과 같습니다). libvirt-qemu, 다른 사용자나 그룹에는 권한이 없습니다). 본질적으로 이는 libvirt-qemu 사용자 세션 umask를 077로 설정하는 것과 같습니다. 이렇게 하면 호스트의 루트가 아닌 사용자가 이러한 파일에 액세스할 수 없게 됩니다.

제가 구현하려고 하는 솔루션은 libvirt-qemu호스트 OS의 사용자 및 관련 다른 사용자가 모두 호출되는 추가 새 보조 사용자 그룹에 속 하도록 vmshares하고 해당 그룹이 소유한 공유 디렉터리를 갖고 vmsharesSGID 비트를 설정하여 모든 내용이 소유됨 vmshares- 내가 원하는 것을 달성해야 합니다. 그러나 007을 사용해야 할 때 virt-manager가 077 이외의 umask를 사용하여 호스트 공유에 새 파일을 생성하여 해당 파일이 그룹 구성원에게 전체 권한을 부여하도록 할 수 없는 것 같습니다 vmshares.

libvirt-qemu 사용자에 대한 umask 정책을 구현하기 위해 다음 내용으로 새 파일 /etc/pam.d/libvirt를 생성해 보았습니다.

libvirtd session requisite pam_umask.so umask=0007

.profile또한 다음 줄을 사용하여 /var/lib/libvirt/에 파일을 생성해 보았습니다.

umask 007

또한 /etc/init.d/libvirt-bin의 libvirt-bin init 스크립트 상단 근처에 이 줄을 추가해 보았습니다.

virt-manager/libvirt는 이 모든 것을 완전히 무시하는 것 같습니다.

호스트와 게스트 시스템 모두에서 완전히 사용 가능한 공유 디렉터리를 확보하려는 목표를 어떻게 달성할 수 있습니까?

답변1

나는 이것이 매우 오래된 게시물이라는 것을 알고 있지만 최근에 libvirt에 패치를 제출하여 이 문제를 해결했습니다. libvirt v6.10부터 시작, 9pfs 공유에 "fmode" 및 "dmode" 옵션을 지정하여 각각 파일 및 디렉터리에 대한 기본 호스트 권한을 제어할 수 있습니다.

v6.10을 실행할 수 없는 경우 qemu:commandlinelibvirt의 XML 도메인 기능을 사용하여 원시 QEMU 플래그를 전달하는 해결 방법을 찾았습니다. 나는 썼다블로그 게시물이를 수행하는 방법에 대해 빠른 버전은 다음과 같은 것을 넣는 것입니다.

<commandline xmlns="http://libvirt.org/schemas/domain/qemu/1.0">
  <arg value="-fsdev"/>
  <arg value="local,security_model=mapped,id=fsdev-fs0,path=/path/to/share,fmode=0644,dmode=0755"/>
  <arg value="-device"/>
  <arg value="virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=sharename,bus=pci.6,addr=0x0"/>
</commandline>

도메인 XML을 "도메인"의 하위 항목으로 입력하세요. 블로그 게시물에서 이러한 값에 대해 자세히 설명하지만 도메인에 맞게 fsdev-fs0, fs0및 를 조정해야 할 수도 있습니다.sharename

관련 정보