Skip to content

user namespace and namespace infrastructure completion

Eric W. Biederman containers linux-fsdevel lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest16 patches 10 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/16userns: Ignore suid and sgid on binaries if the uid or gid can not be mappedfs/exec.c+3 -62 replies
2/16userns: Allow unprivileged users to create user namespaces.kernel/fork.c+0 -80 replies
3/16userns: Allow chown and setgid preservationfs/attr.c+7 -41 reply
4/16userns: Allow setting a userns mapping to your current uid.kernel/user_namespace.c+15 -00 replies
5/16userns: Allow unprivileged users to create new namespaceskernel/nsproxy.c+3 -20 replies
6/16userns: Allow unprivileged use of setns.ipc/namespace.c kernel/nsproxy.c kernel/utsname.c +1 more+17 -60 replies
7/16userns: Make create_new_namespaces take a user_ns parameterinclude/linux/ipc_namespace.h include/linux/utsname.h ipc/namespace.c +2 more+28 -260 replies
8/16userns: Kill task_user_nsinclude/linux/cred.h kernel/ptrace.c kernel/sched/core.c +1 more+25 -91 reply
9/16userns: Implent proc namespace operationsfs/proc/namespaces.c include/linux/proc_fs.h kernel/user_namespace.c+78 -170 replies
10/16userns: Implement unshare of the user namespaceinclude/linux/nsproxy.h include/linux/user_namespace.h kernel/fork.c +2 more+51 -80 replies
11/16procfs: Print task uids and gids in the userns that opened the proc filefs/proc/array.c+1 -11 reply
12/16userns: For /proc/self/{uid,gid}_map derive the lower userns from the struct filekernel/user_namespace.c+10 -26 replies
13/16userns: Allow unprivilged mounts of proc and sysfsfs/proc/root.c fs/sysfs/mount.c+2 -00 replies
14/16proc: Generalize proc inode allocationfs/proc/generic.c include/linux/proc_fs.h+23 -131 reply
15/16proc: Fix the namespace inode permission checks.fs/proc/inode.c fs/proc/namespaces.c+152 -230 replies
16/16proc: Usable inode numbers for the namespace file descriptors.fs/mount.h fs/namespace.c fs/proc/namespaces.c +15 more+132 -120 replies

Reviews trailers per patch

14 of 16 patches have a Reviewed-by or Acked-by.

PatchSerge HallynSerge E. HallynKees Cook
1/16A-b A-b A-b
2/16A-b
3/16A-b
4/16A-b
5/16A-b
6/16A-b
7/16A-b
8/16A-b A-b
9/16A-b
10/16A-b
11/16A-b
12/16A-b
13/16A-b
14/16A-b
15/16
16/16

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v1 thread

Cover letter [PATCH review 0/16] user namespace and namespace infrastructure completion

The following series of changes completes the user namespace and adds the much too long delay bits of namespace infrastructure.

This series of changes adds unprivilged creation of all namespaces support for creating a user namespace with unshare, and support for entering a user namespace with setns.

The proc namespace files are converted into magic symlinks to avoid problems with dentry caching excessively keeping a namespace alive and dentry caching allowing the ptrace_may_access checks to be bypassed.

The proc namespace now have inode numbers that are always the same for the same user namespace allowing stat to test if two file descriptors refer to the same namespace.

Eric W. Biederman (16):
userns: Ignore suid and sgid on binaries if the uid or gid can not be mapped
userns: Allow unprivileged users to create user namespaces.
userns: Allow chown and setgid preservation
userns: Allow setting a userns mapping to your current uid.
userns: Allow unprivileged users to create new namespaces
userns: Allow unprivileged use of setns.
userns: Make create_new_namespaces take a user_ns parameter
userns: Kill task_user_ns
userns: Implent proc namespace operations
userns: Implement unshare of the user namespace
procfs: Print task uids and gids in the userns that opened the proc file
userns: For /proc/self/{uid,gid}_map derive the lower userns from the struct file
userns: Allow unprivilged mounts of proc and sysfs
proc: Generalize proc inode allocation
proc: Fix the namespace inode permission checks.
proc: Usable inode numbers for the namespace file descriptors.

 fs/attr.c                      |   11 ++-
 fs/exec.c                      |    9 +--
 fs/mount.h                     |    1 +
 fs/namespace.c                 |   14 +++
 fs/proc/array.c                |    2 +-
 fs/proc/generic.c              |   26 +++---
 fs/proc/inode.c                |    6 +-
 fs/proc/namespaces.c           |  177 +++++++++++++++++++++++++++++++++++-----
 fs/proc/root.c                 |    1 +
 fs/sysfs/mount.c               |    1 +
 include/linux/cred.h           |    2 -
 include/linux/ipc_namespace.h  |    9 ++-
 include/linux/nsproxy.h        |    2 +-
 include/linux/pid_namespace.h  |    1 +
 include/linux/proc_fs.h        |   18 ++++-
 include/linux/user_namespace.h |   10 ++
 include/linux/utsname.h        |    7 +-
 include/net/net_namespace.h    |    2 +
 init/version.c                 |    2 +
 ipc/msgutil.c                  |    2 +
 ipc/namespace.c                |   32 ++++++--
 kernel/fork.c                  |   33 +++++---
 kernel/nsproxy.c               |   34 ++++----
 kernel/pid.c                   |    1 +
 kernel/pid_namespace.c         |   12 +++
 kernel/ptrace.c                |   10 ++-
 kernel/sched/core.c            |   10 ++-
 kernel/user.c                  |    2 +
 kernel/user_namespace.c        |  147 +++++++++++++++++++++++++++++----
 kernel/utsname.c               |   33 ++++++--
 net/core/net_namespace.c       |   31 +++++++-
 security/yama/yama_lsm.c       |   12 ++-
 32 files changed, 535 insertions(+), 125 deletions(-)