• Christian Brauner's avatar
    capability: handle idmapped mounts · 0558c1bf
    Christian Brauner authored
    In order to determine whether a caller holds privilege over a given
    inode the capability framework exposes the two helpers
    privileged_wrt_inode_uidgid() and capable_wrt_inode_uidgid(). The former
    verifies that the inode has a mapping in the caller's user namespace and
    the latter additionally verifies that the caller has the requested
    capability in their current user namespace.
    If the inode is accessed through an idmapped mount map it into the
    mount's user namespace. Afterwards the checks are identical to
    non-idmapped inodes. If the initial user namespace is passed all
    operations are a nop so non-idmapped mounts will not see a change in
    behavior.
    
    Link: https://lore.kernel.org/r/20210121131959.646623-5-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: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: James Morris <jamorris@linux.microsoft.co...
    0558c1bf
capability.c 14.8 KB