• C
    mount: attach mappings to mounts · a6435940
    Christian Brauner 提交于
    In order to support per-mount idmappings vfsmounts are marked with user
    namespaces. The idmapping of the user namespace will be used to map the
    ids of vfs objects when they are accessed through that mount. By default
    all vfsmounts are marked with the initial user namespace. The initial
    user namespace is used to indicate that a mount is not idmapped. All
    operations behave as before.
    
    Based on prior discussions we want to attach the whole user namespace
    and not just a dedicated idmapping struct. This allows us to reuse all
    the helpers that already exist for dealing with idmappings instead of
    introducing a whole new range of helpers. In addition, if we decide in
    the future that we are confident enough to enable unprivileged users to
    setup idmapped mounts the permission checking can take into account
    whether the caller is privileged in the user namespace the mount is
    currently marked with.
    Later patches enforce that once a mount has been idmapped it can't be
    remapped. This keeps permission checking and life-cycle management
    simple. Users wanting to change the idmapped can always create a new
    detached mount with a different idmapping.
    
    Add a new mnt_userns member to vfsmount and two simple helpers to
    retrieve the mnt_userns from vfsmounts and files.
    
    The idea to attach user namespaces to vfsmounts has been floated around
    in various forms at Linux Plumbers in ~2018 with the original idea
    tracing back to a discussion in 2017 at a conference in St. Petersburg
    between Christoph, Tycho, and myself.
    
    Link: https://lore.kernel.org/r/20210121131959.646623-2-christian.brauner@ubuntu.com
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: linux-fsdevel@vger.kernel.org
    Reviewed-by: NChristoph Hellwig <hch@lst.de>
    Signed-off-by: NChristian Brauner <christian.brauner@ubuntu.com>
    a6435940
fs.h 111.8 KB