From: Christian Brauner <brauner@kernel.org>
To: Snaipe <me@snai.pe>
Cc: linux-fsdevel@vger.kernel.org, Alexander Viro <viro@zeniv.linux.org.uk>
Subject: Re: open_tree, and bind-mounting directories across mount namespaces
Date: Wed, 5 Nov 2025 13:05:43 +0100 [thread overview]
Message-ID: <20251105-rotwild-wartung-e0c391fe559a@brauner> (raw)
In-Reply-To: <CACyTCKhcoetvvokawDc4EsKwJcEDaLgmtXyb1gvqD59NNgh=_A@mail.gmail.com>
On Sat, Nov 01, 2025 at 12:01:38AM +0100, Snaipe wrote:
> Hi folks,
>
> (Disclaimer: I'm not a kernel developer)
>
> I'm currently playing around with the new mount API, on Linux 6.17.6.
> One of the things I'm trying to do is to write a program that unshares
> its mount namespace and receives a directory file descriptor via an
> unix socket from another program that exists in a different mount
> namespace. The intent is to have a program that has access to data on
> a filesystem that is not normally accessible to other unprivileged
> programs, and have that program give access to select directories by
> opening them with O_PATH and sending the fds over a unix socket.
>
> One snag I'm currently hitting is that once I call open_tree(fd, "",
> OPEN_TREE_CLONE|AT_EMPTY_PATH|AT_RECURSIVE), the syscall returns
> EINVAL; I've bpftraced it back to __do_loopback's may_copy_tree check
> and it looks like it's impossible to do on dentries whose mount
> namespace is different that the current task's mount namespace.
>
> I'm trying to understand the reasons this was put in place, and what
> it would take to enable the kind of use-case that I have. Would there
> be a security risk to relax this condition with some kind of open_tree
> flag?
In principle it's doable just like I made statmount() and listmount()
allow you to operate across mount namespaces.
If we do this I don't think we need a new flag as in your new example.
We just need open_tree() to support being called on foreign mounts
provided the caller is privileged over the target mount namespace and it
needs a consistent permission model and loads of tests. So no flags
needed imho.
I can start looking into this next week or you can give it your own
shot.
next prev parent reply other threads:[~2025-11-05 12:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-31 23:01 open_tree, and bind-mounting directories across mount namespaces Snaipe
2025-11-01 15:21 ` Franklin Snaipe Mathieu
2025-11-01 15:21 ` [PATCH 1/1] fs: let open_tree open mounts from another namespace Franklin Snaipe Mathieu
2025-11-05 12:05 ` Christian Brauner [this message]
2025-11-06 12:59 ` open_tree, and bind-mounting directories across mount namespaces Snaipe
2026-01-29 13:39 ` Snaipe
2026-01-29 14:54 ` Christian Brauner
2026-01-29 19:14 ` Snaipe
2026-01-30 14:55 ` Snaipe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251105-rotwild-wartung-e0c391fe559a@brauner \
--to=brauner@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=me@snai.pe \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox