SELinux는 KVM을 사용하여 호스트/게스트 파일 공유를 방해합니다.

SELinux는 KVM을 사용하여 호스트/게스트 파일 공유를 방해합니다.

KVM을 사용하여 Fedora 17을 실행하고 있으며 가상 머신이 제대로 실행되고 있습니다. 나는 따라가려고 노력한다이것호스트 시스템의 파일에 액세스하지만 SELinux가 VM 액세스를 차단합니다 /var/lib/libvirt/images. 이는 ls공유 경로의 가상 머신 내에서 실행될 때 호스트에서 발행되는 메시지입니다.

SELinux is preventing /usr/bin/qemu-kvm from read access on the
directory share.

이 문제를 어떻게 해결할 수 있나요? 내 가상 머신의 목적은 여러 Linux 배포판에서 바이너리를 테스트하는 것이므로 공유 경로가 가장 쉽습니다. 모든 사람에게 /tmp/share에 대한 전체 액세스 권한을 부여하는 방법이 있습니까?

답변1

qemu에 액세스를 시도할 경로를 제공하지 않은 대상 공유에는 svirt_image_t보안 컨텍스트가 있어야 합니다(를 실행하여 확인할 수 있음 ls -ldZ <pathToDestination>). 이것이 다른 것으로 표시되면 SELinux는 kvm이 해당 디렉토리에서 읽기/쓰기를 허용하지 않습니다.

해결 방법은 다음을 수행하는 것입니다(<pathToDestination>을 실제 경로로 대체).

semanage fcontext -a -t svirt_image_t "/<pathToDestination>(/.*)?"
restorecon -vR <pathToDestination>

위의 명령은 pathToDestination 아래의 모든 항목(pathToDestination 포함)에 대한 기본 파일 컨텍스트를 설정하고, 두 번째 명령은 SELinux에게 해당 디렉터리 아래의 모든 항목의 파일 컨텍스트를 기본값(즉, 의미상 변경된 콘텐츠)으로 복원하도록 지시합니다.

/var/log/audit/audit.logAVC 거부 사유 도 확인할 수 있습니다.

오늘의 AVC 거부 검색 /sbin/ausearch -m avc -ts today

또는 /var/log/messages이를 확인하면 인수로 실행되어야 하는 AVC에서 거부된 고유 식별자를 알 수 있습니다.sealert -l

예: sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020

이 정보를 주의 깊게 읽어야 합니다. AVC 거부를 극복하기 위해 실행해야 하는 명령을 알려줍니다.

관련 정보