From: Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
To: "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Cc: Linux Containers
<containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>,
David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 4/6] cr: checkpoint and restore task credentials
Date: Wed, 20 May 2009 11:35:44 -0400 [thread overview]
Message-ID: <4A142350.1060308@cs.columbia.edu> (raw)
In-Reply-To: <20090519014538.GD28312-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Serge -
The 'creator' makes the 'struct user' recursive because to save
an object you need to first save its creator etc. However the
implementation may not call checkpoint_obj() recursively, if
the depth isn't bound a-priory. You probably need to convert
checkpoint_write_user() to do an iterative (loop) implementation
of the recursion...
Oren.
Serge E. Hallyn wrote:
> This patch adds the checkpointing and restart of credentials
> (uids, gids, and capabilities) to Oren's c/r patchset (on top
> of v14). It goes to great pains to re-use (and define when
> needed) common helpers, in order to make sure that as security
> code is modified, the cr code will be updated. Some of the
> helpers should still be moved (i.e. _creds() functions should
> be in kernel/cred.c).
>
> When building the credentials for the restarted process, I
> 1. create a new struct cred as a copy of the running task's
> cred (using prepare_cred())
> 2. always authorize any changes to the new struct cred
> based on the permissions of current_cred() (not the current
> transient state of the new cred).
>
> While this may mean that certain transient_cred1->transient_cred2
> states are allowed which otherwise wouldn't be allowed, the
> fact remains that current_cred() is allowed to transition to
> transient_cred2.
>
> The reconstructed creds are applied to the task at the very
> end of the sys_restart call. This ensures that any objects which
> need to be re-created (file, socket, etc) are re-created using
> the creds of the task calling sys_restart - preventing an unpriv
> user from creating a privileged object, and ensuring that a
> root task can restart a process which had started out privileged,
> created some privileged objects, then dropped its privilege.
>
> With these patches, the root user can restart checkpoint images
> (created by either hallyn or root) of user hallyn's tasks,
> resulting in a program owned by hallyn.
>
> Plenty of bugs to be found, no doubt.
>
> Changelog:
> May 18: fix more refcounting: if (userns 5, uid 0) had
> no active tasks or child user_namespaces, then
> it shouldn't exist at restart or it, its namespace,
> and its whole chain of creators will be leaked.
> May 14: fix some refcounting:
> 1. a new user_ns needs a ref to remain pinned
> by its root user
> 2. current_user_ns needs an extra ref bc objhash
> drops two on restart
> 3. cred needs a ref for the real credentials bc
> commit_creds eats one ref.
> May 13: folded in fix to userns refcounting.
>
> Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
[...]
next prev parent reply other threads:[~2009-05-20 15:35 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-19 1:44 [PATCH 0/6] cr: credentials Serge E. Hallyn
[not found] ` <20090519014446.GA28277-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-19 1:45 ` [PATCH 1/6] cr: break out new_user_ns() Serge E. Hallyn
2009-05-19 1:45 ` [PATCH 2/6] cr: split core function out of some set*{u,g}id functions Serge E. Hallyn
2009-05-19 1:45 ` [PATCH 3/6] cr: capabilities: define checkpoint and restore fns Serge E. Hallyn
2009-05-19 1:45 ` [PATCH 4/6] cr: checkpoint and restore task credentials Serge E. Hallyn
2009-05-19 1:45 ` [PATCH 5/6] cr: restore file->f_cred Serge E. Hallyn
[not found] ` <20090519014546.GE28312-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-20 15:08 ` Oren Laadan
[not found] ` <4A141CEE.2080100-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-20 15:25 ` Serge E. Hallyn
[not found] ` <20090520152527.GA28585-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-20 15:26 ` Oren Laadan
2009-05-19 1:45 ` [PATCH 6/6] user namespaces: debug refcounts Serge E. Hallyn
[not found] ` <20090519014538.GD28312-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-19 8:26 ` [PATCH 4/6] cr: checkpoint and restore task credentials David Howells
[not found] ` <16258.1242721606-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-05-19 13:35 ` Serge E. Hallyn
[not found] ` <20090519133526.GB32685-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-19 14:26 ` David Howells
[not found] ` <19394.1242743199-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-05-19 14:46 ` Serge E. Hallyn
2009-05-20 15:35 ` Oren Laadan [this message]
[not found] ` <4A142350.1060308-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-20 15:53 ` Serge E. Hallyn
[not found] ` <20090520155332.GA28999-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-20 16:08 ` Oren Laadan
[not found] ` <4A142B05.4040907-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-20 16:13 ` Serge E. Hallyn
2009-05-20 16:54 ` Oren Laadan
[not found] ` <4A1435E0.3010306-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-20 21:40 ` Serge E. Hallyn
[not found] ` <20090520214027.GA3517-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-21 14:02 ` Oren Laadan
[not found] ` <4A155EEC.9070509-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2009-05-21 14:14 ` Serge E. Hallyn
2009-05-20 21:52 ` Serge E. Hallyn
[not found] ` <20090520215250.GB3517-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-21 14:13 ` Oren Laadan
2009-05-20 22:16 ` Serge E. Hallyn
[not found] ` <20090520221600.GA3925-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-05-21 6:03 ` Oren Laadan
2009-05-20 16:56 ` Oren Laadan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A142350.1060308@cs.columbia.edu \
--to=orenl-eqauephvms7envbuuze7ea@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.