Re: [RFC] cgroups: implement device whitelist lsm (v2)

From: Serge E. Hallyn
Date: Fri Mar 14 2008 - 10:05:48 EST


Quoting Paul Menage (menage@xxxxxxxxxx):
> On Wed, Mar 12, 2008 at 8:27 PM, Serge E. Hallyn <serue@xxxxxxxxxx> wrote:
> >
> > While composing this with the ns_cgroup may seem logical, it is not
> > the right thing to do, because updates to /cg/cg1/devcg.deny are
> > not reflected in /cg/cg1/cg2/devcg.allow.
>
> Maybe you should follow up the tree to ensure that all parent groups
> have access to the device too? Or alternatively, cache the results of
> this lookup whenever permissions for a device change?

Yes, I considered that. Alternatively additions to a parent cgroup's
.deny could be propagated to all its descendents (but not additions to
the .allow).

I've noted this as something to add to the next version.

> > A task may only be moved to another devcgroup if it is moving to
> > a direct descendent of its current devcgroup.
>
> What's the rationale for that?

To prevent it escaping to laxer device permissions, which of course only
makes sense if we do what you recommend above :)

> > CAP_NS_OVERRIDE is defined as the capability needed to cross namespaces.
> > A task needs both CAP_NS_OVERRIDE and CAP_SYS_ADMIN to create a new
> > devcgroup, update a devcgroup's access, or move a task to a new
> > devcgroup.
>
> But this isn't necessarily crossing namespaces. It could be used for
> device control in the same namespace (e.g. allowing a job to access a
> raw disk for its data storage rather than going through the
> filesystem).

Yeah it should be renamed. I want to use the same cap which we would
use for user namespaces though. CAP_NS_CONT(ainer)? Even though there
really is no such thing as a 'container'. But that would tie together
any such privileges for cgroups and namespaces.

thanks,
-serge
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/