From: Serge Hallyn <serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>
To: serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org,
ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org,
Christian PERRIER
<bubulle-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>,
Linux Containers
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
Pkg-shadow-devel-XbBxUvOt3X2LieD7tvxI8l/i77bcL1HB@public.gmane.org,
"Michael Kerrisk (man-pages)"
<mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [Pkg-shadow-devel] [PATCH 00/11] pkg-shadow support subordinate ids with user namespaces
Date: Wed, 7 Aug 2013 10:33:52 -0500 [thread overview]
Message-ID: <20130807153352.GA5022@sergelap> (raw)
In-Reply-To: <20130806225332.GA14109-pDMkYksm/NDBVznEOA0nCqMXiC8k1aZu0e7PPNI6Mm0@public.gmane.org>
Quoting Nicolas François (nicolas.francois-Fa7rcPG4DJn7nK0/Xc0eeg@public.gmane.org):
> Hi,
>
> On Tue, Aug 06, 2013 at 02:54:03PM +0000, serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org wrote:
> >
> > I rebased and pushed the patchset yesterday.
>
> Thanks (this removes me the burden of finding how to merge a branch).
>
> I started to review and read about user namespaces (thanks to Michael!)
> o
> Here are some questions/remarks:
>
> 1] It would be nice to be able to disable the new tools / manpages /
> options on some systems (i.e. they only make sense on Linux, with
> recent Kernel). It would be OK for me if it is enabled by default.
> Do you agree?
Makes sense.
> 2] I think we can assume that UID/GIDs are (at least) 32 bits, right?
> (or at least when the feature is not disabled - see point 1)
Hm, what about systems compiled with CONFIG_UID16?
> 3] For PAM versions of shadow, I think it would be nice to authenticate
> the caller of newuidmap / newgidmap. Do you agree?
I'm not sure what you mean. Do you mean that pam_something.so could
otherwise call newuidmap/newgidmap before being authenticated?
> 4] What happens when newuidmap / newgidmap are used within a new namespace?
> Is there a risk to do something wrong by recursively creating shells in
> cascaded namespace and using these tools? (I don't think so)
> Is there a way to enforce that it would only be used in the top-most
> namespace? (Maybe it's not needed to forbid it)
The kernel user namespace implementation is designed to support nesting.
Actually I'm not 100% sure, but I think that setuid-root is currently
only honored in the initial user namespace. If that were changed,
then calling newuidmap from a child user namespace would only give
the caller privilege over his child user namespace. Therefore he
could only delegate userids from his own (non-init) namespace to
his own descendent user namespaces.
calling newuidmap on a pid in the initial user namespace results in
-EPERM (as otherwise an unprivileged user could remap privileged
tasks to his permitted subuids :)
> It would be worth to have at least a paragraph about it in the
> manpages. (i.e. IDs in /etc/sub*id are according to the caller's
> namespace)
Agreed.
> 5] It would be worth documenting on which processes newuidmap / newgidmap
> can act.
> With newuidmap, an user can set the UID mapping for any process with
> restrictions on the process and on the requested ranges.
> We could also mention that the kernel enforce also restriction (5
> lines at most; can only be written once)
Note that there are under-development very detailed manpages for
namespaces(7) and user_namespaces(7). I agree the newuidmap
manpage should document what it can act, a one or two line addition
to DESCRIPTION. Then it should simply refer to the other manpages.
> 5.1] The restriction on the caller or processes seems to be the followings:
> if ((getuid() != pw->pw_uid) || // not needed (already enforced
> // by get_my_pwent()) - but does not
> // harm.
> (getgid() != pw->pw_gid) || // I don't understand this
> // restriction. If I execute a
> // shell with another GID (e.g. using
> // newgrp) why should it be denied?
I'm not sure. I don't know whether Eric was following conventions
elsewhere in the code, or had specific attacks in mind.
> (pw->pw_uid != st.st_uid) ||
> (pw->pw_gid != st.st_gid)) { // Is it also needed? What would be
> // the problem
IIUC uid 1000, authorized to use subuids 100000-110000, could otherwise
use newuidmap to remap a namespace owned by uid 1001.
> 6] Documenting the APIs would be useful. Especially the ones in
> lib/subordinateio.c (after 5 minutes, I get lost with the
> is_range_free, range_exists, find_range, have_range, ...)
In-line (above each function) or elsewhere?
> 7] I'm not sure about the handling of limits of ranges.
> * First, I'm not sure what is intended. (e.g. is SUB_GID_MAX included in
> the range)
> * In libmisc/find_new_sub_uids.c: Is it intended to forbid min == max
> (I'm not claiming this is very useful, but if
> SUB_GID_MIN=SUB_GID_MAX and SUB_GID_COUNT is set to 1, this should
> be valid to set a single mapping for one UID)
Agreed that sounds like it should be allowed.
> * In find_free_range(), min==max is also forbidden.
> * In find_free_range(), the check (high > low) forbids to reuse a hole
> of just 1 UID starting at min
> ...
>
> 8] Is there a need to check somewhere that that UID_MAX < SUB_UID_MIN in
> login.defs? Or is it valid to have overlaps?
That sounds like a dangerous condition to me, and I had assumed it was
already checked somewhere.
> 9] Add manpage NOTE that newuidmap / newgidmap can be used only once on a
> given process?
Agreed.
> 10] useradd adds sub*id when the /etc/sub*id files are present, right?
> Is it also correct/intended for system users?
> I think there should be options to enable or disable the feature.
> (I would have chosen the first solution, but I can also understand
> that we consider that the presence of the files is a request to use
> the feature by default)
Not sure on both of those. Actually given the (artificial) definition
of a system user in useradd(8), it sounds to me like subuids could be
useful for system users on a system where tasks get started in a userns
by boot scripts using a system userid.
> 11] Ranges will be defined for new users. Do you think there would be a
> need for another tool to initialize a system for this feature?
> (similar to pwconv)
Do you mean to add ranges for existing users?
> 12] There could be additions in pwck:
> * check that users in /etc/sub*id exist
> * check overlaps?
Overlaps may actually be a feature in some cases, as a way to allow
users to share data.
> * check overlaps with UIDs?
> * ...
>
> I do not think that they are blocking points. (i.e. there could be a
> release without a solution)
I'll wait for comments or ("no time for a comment") on any of these
from Eric, then look at addressing those that I can.
thanks,
-serge
next prev parent reply other threads:[~2013-08-07 15:33 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-22 9:11 [PATCH 00/11] pkg-shadow support subordinate ids with user namespaces Eric W. Biederman
[not found] ` <20130303153726.GA14737@austin.hallyn.com>
[not found] ` <20130303153726.GA14737-anj0Drq5vpzx6HRWoRZK3AC/G2K4zDHf@public.gmane.org>
2013-03-04 5:56 ` [Pkg-shadow-devel] " Christian PERRIER
[not found] ` <20130304055654.GE2629@mykerinos.kheops.frmug.org>
[not found] ` <20130304055654.GE2629-FvNwPcshoeM/MCprI7ZU+I/wHUNs+SP4HZ5vskTnxNA@public.gmane.org>
2013-03-05 22:05 ` Serge E. Hallyn
[not found] ` <87d2wxshu0.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-01-22 9:12 ` [PATCH 01/11] Documentation for /etc/subuid and /etc/subgid Eric W. Biederman
2013-01-22 9:12 ` [PATCH 02/11] login.defs.5: Document the new variables in login.defs Eric W. Biederman
2013-01-22 9:13 ` [PATCH 03/11] Implement commonio_append Eric W. Biederman
2013-01-22 9:13 ` Eric W. Biederman
2013-01-22 9:14 ` [PATCH 04/11] Add backend support for suboridnate uids and gids Eric W. Biederman
[not found] ` <87liblr344.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-01-23 18:22 ` Serge E. Hallyn
[not found] ` <20130123182206.GA4468-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
2013-01-24 22:42 ` Eric W. Biederman
[not found] ` <87a9ryyzh2.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-01-24 22:50 ` Serge Hallyn
2013-01-24 22:59 ` Eric W. Biederman
2013-01-24 23:13 ` [PATCH] subordinateio: Fix subordinate_parse to have an internal static buffer Eric W. Biederman
2013-01-22 9:15 ` [PATCH 05/11] Implement find_new_sub_uids find_new_sub_gids Eric W. Biederman
2013-01-22 9:16 ` [PATCH 06/11] userdel: Add support for removing subordinate user and group ids Eric W. Biederman
2013-01-22 9:17 ` [PATCH 07/11] useradd: Add support for subordinate user identifiers Eric W. Biederman
2013-01-22 9:17 ` [PATCH 08/11] Add support for detecting busy subordinate user ids Eric W. Biederman
2013-01-22 9:18 ` [PATCH 09/11] usermod: Add support for subordinate uids and gids Eric W. Biederman
2013-01-22 9:19 ` [PATCH 10/11] newusers: Add support for assiging " Eric W. Biederman
2013-01-22 9:20 ` [PATCH 11/11] newuidmap, newgidmap: New suid helpers for using " Eric W. Biederman
[not found] ` <87ehhdpoag.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-02-04 18:31 ` [PATCH 11/11] newuidmap,newgidmap: " Serge E. Hallyn
[not found] ` <20130204183129.GA27179-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
2013-02-05 17:20 ` Serge E. Hallyn
2013-02-06 0:28 ` [PATCH 11/11] newuidmap, newgidmap: " Eric W. Biederman
[not found] ` <87sj5ai8us.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-02-06 3:00 ` [PATCH 11/11] newuidmap,newgidmap: " Serge E. Hallyn
[not found] ` <87fw1tr33a.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-06-15 0:15 ` [PATCH 05/11] Implement find_new_sub_uids find_new_sub_gids Seth Arnold
2013-10-25 20:30 ` [PATCH 11/11] newuidmap,newgidmap: New suid helpers for using subordinate uids and gids Serge E. Hallyn
[not found] ` <20131025203025.GA2467-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
2013-10-26 0:42 ` [PATCH 11/11] newuidmap, newgidmap: " Eric W. Biederman
[not found] ` <87zjpw278b.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-10-26 2:33 ` Serge Hallyn
2013-10-26 21:50 ` Eric W. Biederman
[not found] ` <87iowjya4j.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-10-27 23:53 ` Serge E. Hallyn
2013-01-29 18:15 ` [PATCH 00/11] pkg-shadow support subordinate ids with user namespaces Rob Landley
2013-01-29 22:28 ` Eric W. Biederman
2013-01-30 5:35 ` Vasily Kulikov
2013-01-30 6:40 ` Eric W. Biederman
[not found] ` <87vcafyy0k.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-01-30 7:38 ` Vasily Kulikov
2013-02-22 12:16 ` Glauber Costa
[not found] ` <51276189.5040803-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-02-22 16:34 ` Eric W. Biederman
[not found] ` <87zjyw489z.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-02-22 17:09 ` Glauber Costa
[not found] ` <5127A657.3010909-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-02-25 14:34 ` Serge Hallyn
[not found] ` <20130225143451.GE4387@sergelap>
2013-02-25 14:38 ` Glauber Costa
[not found] ` <512B7773.9060704-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-02-25 15:15 ` Serge Hallyn
2013-02-26 1:03 ` Eric W. Biederman
2013-02-25 14:30 ` Serge Hallyn
2013-03-03 15:37 ` Serge E. Hallyn
2013-03-07 15:23 ` Dwight Engen
2013-07-28 17:14 ` [Pkg-shadow-devel] " Christian PERRIER
[not found] ` <20130728171451.GX5670-FvNwPcshoeM/MCprI7ZU+I/wHUNs+SP4HZ5vskTnxNA@public.gmane.org>
2013-07-28 17:58 ` Eric W. Biederman
[not found] ` <87r4eilg6y.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-07-29 0:33 ` Serge Hallyn
[not found] ` <11218395-363e-46cd-b7a1-4488079a4986@email.android.com>
[not found] ` <11218395-363e-46cd-b7a1-4488079a4986-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2013-08-06 14:54 ` Serge E. Hallyn
[not found] ` <20130806145403.GA20913-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
2013-08-06 22:53 ` Nicolas François
[not found] ` <20130806225332.GA14109-pDMkYksm/NDBVznEOA0nCqMXiC8k1aZu0e7PPNI6Mm0@public.gmane.org>
2013-08-07 15:33 ` Serge Hallyn [this message]
2013-08-07 18:04 ` Eric W. Biederman
[not found] ` <87eha5peb8.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-08-09 18:40 ` Nicolas François
[not found] ` <20130307102352.4a5943cd@oracle.com>
[not found] ` <20130307102352.4a5943cd-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2013-03-07 21:54 ` Serge E. Hallyn
[not found] ` <20130307215457.GB9348-anj0Drq5vpzx6HRWoRZK3AC/G2K4zDHf@public.gmane.org>
2013-03-07 22:56 ` Eric W. Biederman
[not found] ` <876212rf9b.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2013-03-08 6:50 ` [Pkg-shadow-devel] " Christian PERRIER
[not found] ` <20130308065019.GI5885-FvNwPcshoeM/MCprI7ZU+I/wHUNs+SP4HZ5vskTnxNA@public.gmane.org>
2013-06-02 13:48 ` Serge E. Hallyn
[not found] ` <20130602134823.GB8004-anj0Drq5vpzx6HRWoRZK3AC/G2K4zDHf@public.gmane.org>
2013-06-02 14:04 ` Christian PERRIER
[not found] ` <20130602140436.GK9152-FvNwPcshoeM/MCprI7ZU+I/wHUNs+SP4HZ5vskTnxNA@public.gmane.org>
2013-06-02 14:33 ` Serge E. Hallyn
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=20130807153352.GA5022@sergelap \
--to=serge.hallyn-gewih/nmzzlqt0dzr+alfa@public.gmane.org \
--cc=Pkg-shadow-devel-XbBxUvOt3X2LieD7tvxI8l/i77bcL1HB@public.gmane.org \
--cc=bubulle-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=serge-A9i7LUbDfNHQT0dZR+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.