[lkml]   [2011]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH 2/9] security: Make capabilities relative to the user namespace.
    David Howells <> wrote:

    > > int (*capable) (struct task_struct *tsk, const struct cred *cred,
    > > - int cap, int audit);
    > > + struct user_namespace *ns, int cap, int audit);
    > Hmmm... A chunk of the contents of the cred struct are user-namespaced.
    > Could you add the user_namespace pointer to the cred struct and thus avoid
    > passing it as an argument to other things.

    Ah, no... Ignore that, I think I see that you do need it.

    > +int cap_capable(struct task_struct *tsk, const struct cred *cred,
    > + struct user_namespace *targ_ns, int cap, int audit)
    > {
    > - return cap_raised(cred->cap_effective, cap) ? 0 : -EPERM;
    > + for (;;) {
    > + /* The creator of the user namespace has all caps. */
    > + if (targ_ns != &init_user_ns && targ_ns->creator == cred->user)
    > + return 0;

    Why is that last comment so? Why should the creating namespace sport all
    possible capabilities? Do you have to have all capabilities available to you
    to be permitted create a new user namespace?

    Also, would it be worth having a separate cap_ns_capable()? Wouldn't most
    calls to cap_capable() only be checking the caps granted in the current user


     \ /
      Last update: 2011-02-23 13:05    [W:0.021 / U:0.508 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site