Messages in this thread |  | | Date | Wed, 22 Oct 2014 19:22:00 -0500 | From | Seth Forshee <> | Subject | Re: [PATCH v5 4/4] fuse: Allow user namespace mounts |
| |
On Wed, Oct 22, 2014 at 02:51:56PM -0700, Andy Lutomirski wrote: > On Wed, Oct 22, 2014 at 2:24 PM, Seth Forshee > <seth.forshee@canonical.com> wrote: > > Cc: Eric W. Biederman <ebiederm@xmission.com> > > Cc: Serge H. Hallyn <serge.hallyn@ubuntu.com> > > Cc: Andy Lutomirski <luto@amacapital.net> > > Signed-off-by: Seth Forshee <seth.forshee@canonical.com> > > --- > > fs/fuse/inode.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c > > index b88b5a780228..7d0e73e36e7b 100644 > > --- a/fs/fuse/inode.c > > +++ b/fs/fuse/inode.c > > @@ -1201,7 +1201,7 @@ static void fuse_kill_sb_anon(struct super_block *sb) > > static struct file_system_type fuse_fs_type = { > > .owner = THIS_MODULE, > > .name = "fuse", > > - .fs_flags = FS_HAS_SUBTYPE, > > + .fs_flags = FS_HAS_SUBTYPE | FS_USERNS_MOUNT, > > .mount = fuse_mount, > > .kill_sb = fuse_kill_sb_anon, > > }; > > @@ -1233,7 +1233,7 @@ static struct file_system_type fuseblk_fs_type = { > > .name = "fuseblk", > > .mount = fuse_mount_blk, > > .kill_sb = fuse_kill_sb_blk, > > - .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE, > > + .fs_flags = FS_REQUIRES_DEV | FS_HAS_SUBTYPE | FS_USERNS_MOUNT, > > }; > > MODULE_ALIAS_FS("fuseblk"); > > > > -- > > 1.9.1 > > > > This is mostly a sign of my ignorance, but how does this actually end > up working? I assume that the mounter opens /dev/fuse and then passes > the fd to the mount call. Which userns is captured? The opener of > /dev/fuse or the mounter of the fs?
You're correct that the mounter passes the fd to /dev/fuse to the mount call. The namespace of the mounter is used, but there's also a check to make sure that's the same as that of the opener of /dev/fuse, otherwise the mount fails.
Seth
|  |