Re: [PATCH RFC 4/7] fs: support FD_FAILFS_ROOT in fchroot()
Christian Brauner <[email protected]> Thu, 23 Jul 2026 15:01:09 +0200
| Newsgroups | org.kernel.vger.linux-api,org.kernel.vger.linux-doc,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260723-mahlt-abhob-semantik-21254c8d36cb@brauner> |
On Thu, Jul 23, 2026 at 05:49:06AM -0700, Andy Lutomirski wrote: > On Thu, Jul 23, 2026 at 4:37 AM Christian Brauner <[email protected]> wrote: > > > > Once entered, failfs is a throw-away-the-key moment. The task is > > considered chrooted so it cannot create user namespaces to regain > > CAP_SYS_CHROOT. chroot()/fchroot() back out require CAP_SYS_CHROOT. > > I kind of alluded to this earlier, but I don't think we should promise > this. In particular, I still think we should eventually allow a > non-chrooted process with no_new_privs to chroot to any valid > directory, and I think we should consider changing the definition of > current_chrooted() such that failfs-as-root would cause it to return > false. I'm also not sure why it's useful -- if I want to throw away I had considered that but introducing this change alongside this series felt too spicy for me. > the key to accessing the normal contents of my mountns without > changing my mountns, I need to chroot somewhere (like failfs) *and* I > need to somehow prevent myself from getting an fd or a magic link back > to the ordinary mountns contents. If I somehow get such an fd, > preventing my from fchrooting to it doesn't seem to accomplish > anything, since I could traverse the fd with openat, etc just as > easily, or even fchdir to it and use relative paths. I think I generally agree with you. My main concern here is mostly about changing very long-standing behavior here and making failfs special here feels like it could easily misused. > > My understanding of the exact workings of the mount tree is possibly > not good enough to specify the semantics I think are correct quite > exactly, but I think a decent approximation is that a task should be > considered to be not chrooted if its root is at the top of its mount > tree or is not in a mount tree at all. If we could altering this definition from the patchset I would be in favor of it. I'm curious what your take is though.