linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* userns: targeted capabilities v4
@ 2011-01-11  6:43 Serge E. Hallyn
  2011-01-11  6:43 ` [PATCH 01/08] Add a user_namespace as creator/owner of uts_namespace Serge E. Hallyn
                   ` (7 more replies)
  0 siblings, 8 replies; 14+ messages in thread
From: Serge E. Hallyn @ 2011-01-11  6:43 UTC (permalink / raw)
  To: LSM
  Cc: James Morris, Kees Cook, containers, kernel list,
	Eric W. Biederman, Alexey Dobriyan, Michael Kerrisk, serge,
	Bastian Blank

This version addresses feedback from and bugs pointed out by
Bastian.  It also adds user namespace checks in fs/namei.c.
If a task reads a file owned by another user_ns, it gets the
world access rights to that file.  Since inodes don't yet have
a user namespace, we just declare that init_user_ns owns them all.
So if you are root in a child user namespace, you effectively
are roaming the system as user nobody.  See 
http://www.spinics.net/lists/linux-containers/msg09716.html
and
http://www.spinics.net/lists/linux-containers/msg08486.html
for prior discussions.

[ Intro to v3 follows ]

The core of the set is patch 2, originally conceived and
implemented by Eric Biederman.  The concept is to target
capabilities at user namespaces.  A task's capabilities are
now contextualized as follows (previously, capabilities had
no context):

1. For a task in the initial user namespace, the calculated
capabilities (pi, pe, pp) are available to act upon any
user namespace.

2. For a task in a child user namespace, the calculated
capabilities are available to act only on its own or any
descendent user namespace.  It has no capabilities to any
parent or unrelated user namespaces.

3. If a user A creates a new user namespace, that user has
all capabilities to that new user namespace and any of its
descendents.  (Contrast this with a user namespace created
by another user B in the same user namespace, to which this
user A has only his calculated capabilities)

All existing 'capable' checks are automatically converted to
checks against the initial user namespace.  The rest of the
patches begin to enable capabilities in child user namespaces
to setuid, setgid, set hostnames, kill tasks, and do ptrace.

My next step would be to re-introduce a part of a several year
old patchset which assigns a userns to a superblock (and hence
to inodes), and grants 'user other' permissions to any task
whose uid does not map to the target userns.  (By default, this
will be all but the initial userns)

thanks,
-serge

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2011-02-04 15:55 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-11  6:43 userns: targeted capabilities v4 Serge E. Hallyn
2011-01-11  6:43 ` [PATCH 01/08] Add a user_namespace as creator/owner of uts_namespace Serge E. Hallyn
2011-01-11  6:44 ` [PATCH 02/08] security: Make capabilities relative to the user namespace Serge E. Hallyn
2011-01-11  6:44 ` [PATCH 03/08] allow sethostname in a container Serge E. Hallyn
2011-01-11 16:14   ` Serge E. Hallyn
2011-02-04 15:56     ` Serge E. Hallyn
2011-01-11  6:44 ` [PATCH 04/08] allow killing tasks in your own or child userns Serge E. Hallyn
2011-01-11  6:44 ` [PATCH 05/08] Allow ptrace from non-init user namespaces Serge E. Hallyn
2011-01-14 14:46   ` Bastian Blank
2011-01-14 15:00     ` Bastian Blank
2011-01-15  0:35     ` Serge E. Hallyn
2011-01-11  6:44 ` [PATCH 06/08] user namespaces: convert all capable checks in kernel/sys.c Serge E. Hallyn
2011-01-11  6:45 ` [PATCH 07/08] user namespaces: convert several capable() calls Serge E. Hallyn
2011-01-11  6:45 ` [PATCH 08/08] userns: check user namespace for task->file uid equivalence checks Serge E. Hallyn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).