• Alexey Gladkov's avatar
    sysctl: allow change system v ipc sysctls inside ipc namespace · 50ec499b
    Alexey Gladkov authored
    Patch series "Allow to change ipc/mq sysctls inside ipc namespace", v3.
    
    Right now ipc and mq limits count as per ipc namespace, but only real root
    can change them.  By default, the current values of these limits are such
    that it can only be reduced.  Since only root can change the values, it is
    impossible to reduce these limits in the rootless container.
    
    We can allow limit changes within ipc namespace because mq parameters are
    limited by RLIMIT_MSGQUEUE and ipc parameters are not limited to anything
    other than cgroups.
    
    
    This patch (of 3):
    
    Rootless containers are not allowed to modify kernel IPC parameters.
    
    All default limits are set to such high values that in fact there are no
    limits at all.  All limits are not inherited and are initialized to
    default values when a new ipc_namespace is created.
    
    For new ipc_namespace:
    
    size_t       ipc_ns.shm_ctlmax = SHMMAX; // (ULONG_MAX - (1UL << 24))
    size_t       ipc_ns.shm_ctlall = SHMALL; // (ULONG_MAX - (1UL << 24))
    int          ipc_ns.shm_ctlmni = IPCMNI; // (1 << 15)
    int          ipc_ns.shm_rmid_forced = 0;
    unsigned int ipc_ns.msg_ctlmax = MSGMAX; // 8192
    unsigned int ipc_ns.msg_ctlmni = MSGMNI; // 32000
    unsigned int ipc_ns.msg_ctlmnb = MSGMNB; // 16384
    
    The shm_tot (total amount of shared pages) has also ceased to be global,
    it is located in ipc_namespace and is not inherited from anywhere.
    
    In such conditions, it cannot be said that these limits limit anything. 
    The real limiter for them is cgroups.
    
    If we allow rootless containers to change these parameters, then it can
    only be reduced.
    
    Link: https://lkml.kernel.org/r/cover.1705333426.git.legion@kernel.org
    Link: https://lkml.kernel.org/r/d2f4603305cbfed58a24755aa61d027314b73a45.1705333426.git.legion@kernel.orgSigned-off-by: default avatarAlexey Gladkov <legion@kernel.org>
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Link: https://lkml.kernel.org/r/e2d84d3ec0172cfff759e6065da84ce0cc2736f8.1663756794.git.legion@kernel.org
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Joel Granados <joel.granados@gmail.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    50ec499b
ipc_sysctl.c 8.08 KB