• Dirk Steinmetz's avatar
    namei: permit linking with CAP_FOWNER in userns · f2ca3796
    Dirk Steinmetz authored
    Attempting to hardlink to an unsafe file (e.g. a setuid binary) from
    within an unprivileged user namespace fails, even if CAP_FOWNER is held
    within the namespace. This may cause various failures, such as a gentoo
    installation within a lxc container failing to build and install specific
    packages.
    
    This change permits hardlinking of files owned by mapped uids, if
    CAP_FOWNER is held for that namespace. Furthermore, it improves consistency
    by using the existing inode_owner_or_capable(), which is aware of
    namespaced capabilities as of 23adbe12 ("fs,userns: Change
    inode_capable to capable_wrt_inode_uidgid").
    Signed-off-by: default avatarDirk Steinmetz <public@rsjtdrjgfuzkfg.com>
    
    This is hitting us in Ubuntu during some dpkg upgrades in containers.
    When upgrading a file dpkg creates a hard link to the old file to back
    it up before overwriting it. When packages upgrade suid files owned by a
    non-root user the link isn't permitted, and the package upgrade fails.
    This patch fixes our problem.
    Tested-by: default avatarSeth Forshee <seth.forshee@canonical.com>
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    f2ca3796
namei.c 115 KB