KVM: 가상 머신을 파괴할 수 없음(권한 거부) - AppArmor가 Libvirt를 차단함

KVM: 가상 머신을 파괴할 수 없음(권한 거부) - AppArmor가 Libvirt를 차단함

루트로 실행할 때마다 virsh destroy ${KVM}다음 오류가 발생합니다( virsh shutdown ${KVM}완전히 응답하지 않고 아무 일도 일어나지 않습니다).

error: Failed to destroy domain ${KVM}
error: Failed to terminate process 11956 with SIGTERM: Permission denied

KVM 내에서 실행 하면 shutdown -h nowqemu-system-x86_64 프로세스( kill ${PID_OF_QEMU_PROCESS})를 종료할 때까지 영원히 멈춥니다. 시스템 로그에 명시된 대로 apparmor가 호출을 차단하고 있습니다( virsh shutdownvirsh destroy).

apparmor="DENIED" operation="ptrace" profile="/usr/sbin/libvirtd" pid=23212
    comm="libvirtd" requested_mask="trace" denied_mask="trace" peer="unconfined"

qemu 구성 파일에서 /etc/libvirt/qemu.confApparmor( )를 비활성화하려고 시도했지만 security_driver = "none"여전히 동일한 오류가 발생했습니다.

일부 세부정보: OS = Debian 9, Kernel = 4.14.0-0.bpo.2-amd64, libvirt-version = 3.0.0-4.

의류를 비활성화하지 않고 문제를 해결하는 방법을 아는 사람이 있습니까?

답변1

이 설정은 security_driver = "none"커널에서 의류를 비활성화하지 않고 libvirt일부 자체적으로 지원합니다 .

현재 안정 버전(debian 9/stretch)의 의류 구성 파일과 현재 불안정 버전의 의류 구성 파일을 살펴보면 몇 가지 차이점을 발견했습니다.

다음 규칙을 추가할 수 있다고 생각합니다 /etc/apparmor.d/local/usr.sbin.libvirtd(이는 두 버전 간의 많은 차이점 중 하나입니다).

ptrace (trace) peer=unconfined,

그런 다음 의류 서비스를 다시 시작하세요.service restart apparmor

그러나 모든 것이 제대로 작동하려면 추가 규칙이 필요할 수 있습니다.

또 다른 해결책은 프로필을 "불만" 모드로 설정하는 것입니다. aa-complain /usr/sbin/libvirtd이렇게 하면 의류가 어떤 것도 거부하지 못하게 되지만 문제에 대한 기록은 유지됩니다.

나중에 이를 사용하여 aa-logprof누락된 규칙을 생성할 수 있습니다.유심히 보다해당) 또는 불안정한 장소에서 의류 구성 파일을 가져오십시오.

관련 정보