Libvirt on ubuntuでAppArmorを黙らせる


libvirtで怪しい実験をしようとすると、すぐにAppArmorが文句を言ってPermission deniedになるのを黙らせる方法。

一時的にdomainのAppArmorをdisable/complainモードにする

aa-complainコマンド (apparmor-utilsパッケージ) を使って、実験しようとするdomainのAppArmorをcomplainモードにする方法は、以下の通り。

# virsh domuuid GUEST
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# aa-complain /etc/apparmor.d/libvirt/libvirt-`virsh domuuid GUEST`
Setting /etc/apparmor.d/libvirt/libvirt-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX to complain mode.

disableモードにするには、aa-complainコマンドの代わりにaa-disableコマンドを使う。また、実験が終わってAppArmorを効かせたい場合は、aa-complainの代わりにaa-enforceを使う。

なお、この方法はdomain実行前など、/etc/apparmor.d/libvirtに対応するAppArmorプロファイルがないと使えない (と思う)。

domainの設定でAppArmorを使わないようにする

domainのXMLでAppArmorを使わない設定にすることができる。

# virsh edit GUEST

domain要素の直下にseclabelを追加。

<domain>
  <seclabel type='none'/>
  ...