• Seth Forshee's avatar
    UBUNTU: SAUCE: fs: Allow superblock owner to change ownership of inodes with unmappable ids · 6e42b32e
    Seth Forshee authored
    BugLink: http://bugs.launchpad.net/bugs/1566505
    
    In a userns mount some on-disk inodes may have ids which do not
    map into s_user_ns, in which case the in-kernel inodes are owned
    by invalid users. The superblock owner should be able to change
    attributes of these inodes but cannot. However it is unsafe to
    grant the superblock owner privileged access to all inodes in the
    superblock since proc, sysfs, etc. use DAC to protect files which
    may not belong to s_user_ns. The problem is restricted to only
    inodes where the owner or group is an invalid user.
    
    We can work around this by allowing users with CAP_CHOWN in
    s_user_ns to change an invalid owner or group id, so long as the
    other id is either invalid or mappable in s_user_ns. After
    changing ownership the user will be privileged towards the inode
    and thus able to change other attributes.
    
    As an precaution, checks for invalid ids are added to the proc
    and kernfs setattr interfaces. These filesystems are not expected
    to have inodes with invalid ids, but if it does happen any
    setattr operations will return -EPERM.
    Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
    Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
    6e42b32e
generic.c 14 KB