[libvirt] [PATCH] Change label of fusefs mounted at /proc/meminfo in lxc containers

Daniel P. Berrange berrange at redhat.com
Thu May 16 16:09:03 UTC 2013


On Thu, May 16, 2013 at 05:04:06PM +0100, Daniel P. Berrange wrote:
> On Wed, May 15, 2013 at 10:35:48AM -0400, dwalsh at redhat.com wrote:
> > From: Dan Walsh <dwalsh at redhat.com>
> > 
> > We do not want to allow contained applications to be able to read fusefs_t.
> > So we want /proc/meminfo label to match the system default proc_t.
> > 
> > Fix checking of error codes
> > ---
> >  src/lxc/lxc_container.c | 24 ++++++++++++++++++++++++
> >  1 file changed, 24 insertions(+)
> > 
> > diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> > index 8e1d10a..8c0edb0 100644
> > --- a/src/lxc/lxc_container.c
> > +++ b/src/lxc/lxc_container.c
> > @@ -52,6 +52,10 @@
> >  # include <blkid/blkid.h>
> >  #endif
> >  
> > +#if WITH_SELINUX
> > +# include <selinux/selinux.h>
> > +#endif
> > +
> >  #include "virerror.h"
> >  #include "virlog.h"
> >  #include "lxc_container.h"
> > @@ -761,6 +765,26 @@ static int lxcContainerMountProcFuse(virDomainDefPtr def,
> >                             def->name)) < 0)
> >          return ret;
> >  
> > +#if WITH_SELINUX
> > +    if (is_selinux_enabled() > 0) {
> > +        security_context_t scon;
> > +        ret = getfilecon("/proc/meminfo", &scon);
> > +        if (ret < 0) {
> > +            virReportSystemError(errno,
> > +                                 _("Failed to get security context of %s for /proc/meminfo mount point"),
> > +                                 meminfo_path);
> > +            return ret;
> > +        }
> > +        ret = setfilecon(meminfo_path, scon);
> > +        freecon(scon);
> > +        if (ret < 0) {
> > +            virReportSystemError(errno,
> > +                                 _("Failed to set security context of %s for /proc/meminfo mount point"),
> > +                                 meminfo_path);
> 
> So I'm not unable to start any containers with this patch applied:
> 
> 2013-05-16 16:01:47.835+0000: 1: error : lxcContainerMountProcFuse:787 : Failed to set security context of /.oldroot//run/libvirt/lxc/busy.fuse/meminfo for /proc/meminfo mount point: Operation not supported
> 
> 
> What distro + kernel version did you test this with ?  I'm using current
> F19 with kernel 3.9.0-0.rc8.git0.2.fc19.x86_64 when I see the failure

Indeed, even trying to change it manually fails

# chcon system_u:object_r:proc_t:s0 /proc/8180/root/proc/meminfo
chcon: failed to change context of ‘/proc/8180/root/proc/meminfo’ to ‘system_u:object_r:proc_t:s0’: Operation not supported



Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list