[libvirt] [lxc-devel] capset fails with userns

Serge Hallyn serge.hallyn at ubuntu.com
Wed Feb 26 17:00:18 UTC 2014


Quoting Stephan Sachse (ste.sachse at gmail.com):
> > Look at security/commoncap.c:cap_inode_setxattr()
> >
> > Whereas file ownership is properly namespaced, and task capabilities
> > are properly namespaced, file capabilities are more problematic.  To
> > support this, I think we'd need a new capability xattr format.  If we
> > add the kuid_t of the user_namespace root id, I think we could safely
> > support this.
> 
> sorry for this :) but i'm not a kernel/c programmer.

No no, thanks for raising the issue, and thanks for having sent a patch!

> maybe there must be more then one cap set per file.
> 
> security.capability for the init_ns
> security.capability.{kuid_t} for the userns
> 
> the name of the xattr must be transparently mapped.
> 
> in userns for get*() if there is no security.capability.{kuid_t} use
> the security.capability. but never write to security.capability always
> to security.capability.{kuid_t}
> 
> or the format of security.capability must be changed to support more
> then one set of caps. every capability set must be associated with a
> kuid_t.

To avoid impacting the performance of the host case, we could
keep the current XATTR_NAME_CAPS format in init_user_ns, and
add a new XATTR_NAME_CAPS_V2 which adds the kuid_t.

> back to line one of my mail: i'm not a kernel/c programmer :'(

This frankly looks like fun, but I won't have time to work on this
this week.  If anyone else does, I'll happily look at the patches.

thanks,
-serge




More information about the libvir-list mailing list