On Fri, Sep 21, 2012 at 01:00:26PM +0100, Daniel P. Berrange wrote:
On Fri, Sep 21, 2012 at 12:54:25PM +0100, Richard W.M. Jones wrote:
>
> On Fri, Sep 21, 2012 at 10:39:19AM +0100, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange(a)redhat.com>
> >
> > SELinux wants all log files opened with O_APPEND. When
> > running non-root though, libvirtd likes to use O_TRUNC
> > to avoid log files growing in size indefinitely. Instead
> > of using O_TRUNC though, we can use O_APPEND and then
> > call ftruncate() which keeps SELinux happier.
>
> As far as I can see, although this patch doesn't break anything, it
> doesn't fix the SELinux problem either. SELinux still prevents qemu
> from writing to the log. The AVCs look the same as before:
>
> type=AVC msg=audit(1348227948.158:14174): avc: denied { append } for pid=13139
comm="qemu-kvm"
path="/home/rjones/.cache/libvirt/qemu/log/guestfs-wd6efsxohmy5jd2s.log"
dev="dm-5" ino=1870215 scontext=unconfined_u:unconfined_r:svirt_t:s0:c69,c512
tcontext=unconfined_u:object_r:cache_home_t:s0 tclass=file
> type=AVC msg=audit(1348227948.158:14174): avc: denied { append } for pid=13139
comm="qemu-kvm"
path="/home/rjones/.cache/libvirt/qemu/log/guestfs-wd6efsxohmy5jd2s.log"
dev="dm-5" ino=1870215 scontext=unconfined_u:unconfined_r:svirt_t:s0:c69,c512
tcontext=unconfined_u:object_r:cache_home_t:s0 tclass=file
The target context here is unconfined_u:object_r:cache_home_t:s0 which
is wrong. The context ought to be virt_home_t instead of cache_home_t.
Try changing the libvirt directories to have virt_home_t as their type.
Then my patch ought to do something useful.
This is correct: relabelling the log directory causes the patch to
work.
We need to check if SELinux policy knows about $HOME/.cache/libvirt
and $HOME/.config/libvirt, or whether it still only considers the
old location of $HOME/.libvirt
I've filed a bug against SELinux:
https://bugzilla.redhat.com/show_bug.cgi?id=859395
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top