19.2. SELinux and virtualization
virt_image_t
label applied to them. The /var/lib/libvirt/images
directory has this label applied to it and its contents by default. This does not mean that images must be stored in this directory; images can be stored anywhere, provided they are labeled with virt_image_t
.
The following section is an example of adding a logical volume to a guest with SELinux enabled. These instructions also work for hard drive partitions.
Procedure 19.1. Creating and mounting a logical volume on a guest with SELinux enabled
- Create a logical volume. This example creates a 5 gigabyte logical volume named
NewVolumeName
on the volume group namedvolumegroup
.# lvcreate -n
NewVolumeName
-L5G volumegroup
- Format the
NewVolumeName
logical volume with a file system that supports extended attributes, such as ext3.# mke2fs -j
/dev/volumegroup/NewVolumeName
- Create a new directory for mounting the new logical volume. This directory can be anywhere on your file system. It is advised not to put it in important system directories (
/etc
,/var
,/sys
) or in home directories (/home
or/root
). This example uses a directory called/virtstorage
# mkdir
/virtstorage
- Mount the logical volume.
# mount
/dev/volumegroup/NewVolumeName /virtstorage
- Set the correct SELinux type for a Xen folder.
semanage fcontext -a -t xen_image_t "/virtstorage(/.*)?"
Alternatively, set the correct SELinux type for a KVM folder.semanage fcontext -a -t virt_image_t "/virtstorage(/.*)?"
If the targeted policy is used (targeted is the default policy) the command appends a line to the/etc/selinux/targeted/contexts/files/file_contexts.local
file which makes the change persistent. The appended line may resemble this:/virtstorage(/.*)? system_u:object_r:xen_image_t:s0
- Label the device node (for example,
/dev/volumegroup/NewVolumeName
with the correct label:# semanage fcontext -a -t xen_image_t /dev/volumegroup/NewVolumeName # restorecon /dev/volumegroup/NewVolumeName