Re: unprivileged mounts git tree

From: Miklos Szeredi
Date: Thu Sep 04 2008 - 14:04:24 EST


On Thu, 4 Sep 2008, Serge E. Hallyn wrote:
> Quoting Miklos Szeredi (miklos@xxxxxxxxxx):
> > On Thu, 4 Sep 2008, Serge E. Hallyn wrote:
> > > but you're still doing
> > >
> > > if (IS_MNT_SHARED(old_nd.path.mnt) && !capable(CAP_SYS_ADMIN))
> > > goto out;
> > >
> > > shouldn't it be something like
> > >
> > > if (IS_MNT_SHARED(old_nd.path.mnt) && (old_nd.path.mnt & MNT_USER))
> > > goto out;
> > >
> > > ?
> >
> > Why would that be an error? There's no real security gain to be had
> > from restricting a privileged user, but could cause a lot of
> > annoyance. If we think this is dangerous, then protection should be
> > built into mount(8) with an option to override. But not into the
> > kernel, IMO.
>
> We disagree on that. But can we agree that the check you added is wrong?

No :)

> There is no reason why a user mount should not be able to do shared
> mounts, is there?

I don't know. It's something to think about in the future, but not
essential. We know that without the above check the user can do bad
things: propagate mounts back into the source, and we don't want that.

We could allow binding a shared mount if

a) the owners of the source and destination match
b) the destination is made a slave of the source

But the current patchset doesn't allow _any_ changes to propagation
without CAP_SYS_ADMIN, so why should bind be an exception?

And yes, this is something to think about, but I think it's a rather
uncommon corner case, and so the patchset very much makes sense
without having to deal with unprivileged mount propagation changes.

> So should the check above just go away then?

No, we'd be back with the original problem.

Thanks,
Miklos
--
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/