linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Serge Hallyn <serge.hallyn@ubuntu.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Michael H. Warfield" <mhw@WittsEnd.com>,
	linux-kernel@vger.kernel.org, Jens Axboe <axboe@kernel.dk>,
	Arnd Bergmann <arnd@arndb.de>,
	Eric Biederman <ebiederm@xmission.com>,
	Serge Hallyn <serge.hallyn@canonical.com>,
	lxc-devel@lists.linuxcontainers.org,
	James Bottomley <James.Bottomley@HansenPartnership.com>
Subject: Re: [lxc-devel] [RFC PATCH 00/11] Add support for devtmpfs in user namespaces
Date: Thu, 15 May 2014 17:42:54 +0000	[thread overview]
Message-ID: <20140515174254.GM21073@ubuntumail> (raw)
In-Reply-To: <20140515140856.GA17453@kroah.com>

Quoting Greg Kroah-Hartman (gregkh@linuxfoundation.org):
> On Thu, May 15, 2014 at 09:42:17AM -0400, Michael H. Warfield wrote:
> > On Wed, 2014-05-14 at 21:00 -0700, Greg Kroah-Hartman wrote:
> > > On Wed, May 14, 2014 at 10:15:27PM -0500, Seth Forshee wrote:
> > > > On Wed, May 14, 2014 at 10:17:31PM -0400, Michael H. Warfield wrote:
> > > > > > > Using devtmpfs is one possible
> > > > > > > solution, and it would have the added benefit of making container setup
> > > > > > > simpler. But simply letting containers mount devtmpfs isn't sufficient
> > > > > > > since the container may need to see a different, more limited set of
> > > > > > > devices, and because different environments making modifications to
> > > > > > > the filesystem could lead to conflicts.
> > > > > > > 
> > > > > > > This series solves these problems by assigning devices to user
> > > > > > > namespaces. Each device has an "owner" namespace which specifies which
> > > > > > > devtmpfs mount the device should appear in as well allowing priveleged
> > > > > > > operations on the device from that namespace. This defaults to
> > > > > > > init_user_ns. There's also an ns_global flag to indicate a device should
> > > > > > > appear in all devtmpfs mounts.
> > > > > 
> > > > > > I'd strongly argue that this isn't even a "problem" at all.  And, as I
> > > > > > said at the Plumbers conference last year, adding namespaces to devices
> > > > > > isn't going to happen, sorry.  Please don't continue down this path.
> > > > > 
> > > > > I was just mentioning that to Serge just a week or so ago reminding him
> > > > > of what you told all of us face to face back then.  We were having a
> > > > > discussion over loop devices into containers and this topic came up.
> > > > 
> > > > It was the loop device use case that got me started down this path in
> > > > the first place, so I don't personally have any interest in physical
> > > > devices right now (though I was sure others would).
> > 
> > > Why do you want to give access to a loop device to a container?
> > > Shouldn't you set up the loop devices before creating the container and
> > > then pass those mount points into the container?  I thought that was how
> > > things worked today, or am I missing something?
> > 
> > Ah, you keep feeding me easy ones.  I need raw access to loop devices
> > and loop-control because I'm using containers to build NST (Network
> > Security Toolkit) distribution iso images (one container is x86_64 while
> > the other is i686).  Each requires 2 loop devices.  You can't set up the
> > loop devices in advance since the containers will be creating the images
> > and building them.  NST tinkers with the base build engine
> > configuration, so I really DON'T want it running on a hard iron host. 
> > There may be other cases where I need other specialized containers for
> > building distros.  I'm also looking at custom builds of Kali (another
> > security distribution).
> 
> Then don't use a container to build such a thing, or fix the build
> scripts to not do that :)
> 
> That is not a "normal" use case for a container at all.  Containers are
> not for "everything", use a virtual machine for some tasks (like this
> one).

Hi Greg,

What exactly defines '"normal" use case for a container'?  Not too long
ago much of what we can now do with network namespaces was not a normal
container use case.  Neither "you can't do it now" nor "I don't use it
like that" should be grounds for a pre-emptive nack.  "It will horribly
break security assumptions" certainly would be.

That's not to say there might not be good reasons why this in particular
is not appropriate, but ISTM if things are going to be nacked without
consideration of the patchset itself, we ought to be having a ksummit
session to come to a consensus [ or receive a decree, presumably by you :)
but after we have a chance to make our case ] on what things are going to
be un/acceptable.

> > Serge mentioned something to me about a loopdevfs (?) thing that someone
> > else is working on.  That would seem to be a better solution in this
> > particular case but I don't know much about it or where it's at.
> 
> Ok, let's see those patches then.

I think Seth has a git tree ready, but not sure which branch he'd want
us to look at.

Splitting a namespaced devtmpfs from loopdevfs discussion might be
sensible.  However, in defense of a namespaced devtmpfs I'd say
that for userspace to, at every container startup, bind-mount in
devices from the global devtmpfs into a private tmpfs (for systemd's
sake it can't just be on the container rootfs), seems like something
worth avoiding.

-serge

PS - Apparently both parallels and Michael independently
project devices which are hot-plugged on the host into containers.
That also seems like something worth talking about (best practices,
shortcomings, use cases not met by it, any ways tha the kernel can
help out) at ksummit/linuxcon.

  reply	other threads:[~2014-05-15 17:43 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-14 21:34 [RFC PATCH 00/11] Add support for devtmpfs in user namespaces Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 01/11] driver core: Assign owning user namespace to devices Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 02/11] driver core: Add device_create_global() Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 03/11] tmpfs: Add sub-filesystem data pointer to shmem_sb_info Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 04/11] ramfs: Add sub-filesystem data pointer to ram_fs_info Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 05/11] devtmpfs: Add support for mounting in user namespaces Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 06/11] drivers/char/mem.c: Make null/zero/full/random/urandom available to " Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 07/11] block: Make partitions inherit namespace from whole disk device Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 08/11] block: Allow blkdev ioctls within user namespaces Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 09/11] misc: Make loop-control available to all " Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 10/11] loop: Assign devices to current_user_ns() Seth Forshee
2014-05-14 21:34 ` [RFC PATCH 11/11] loop: Allow priveleged operations for root in the namespace which owns a device Seth Forshee
2014-05-23  5:48   ` Marian Marinov
2014-05-26  9:16     ` Seth Forshee
2014-05-26 15:32       ` [lxc-devel] " Michael H. Warfield
2014-05-26 15:45         ` Seth Forshee
2014-05-27  1:36         ` Serge E. Hallyn
2014-05-27  2:39           ` Michael H. Warfield
2014-05-27  7:16             ` Seth Forshee
2014-05-27 13:16             ` Serge Hallyn
2014-05-15  1:32 ` [RFC PATCH 00/11] Add support for devtmpfs in user namespaces Greg Kroah-Hartman
2014-05-15  2:17   ` [lxc-devel] " Michael H. Warfield
2014-05-15  3:15     ` Seth Forshee
2014-05-15  4:00       ` Greg Kroah-Hartman
2014-05-15 13:42         ` Michael H. Warfield
2014-05-15 14:08           ` Greg Kroah-Hartman
2014-05-15 17:42             ` Serge Hallyn [this message]
2014-05-15 18:12               ` Seth Forshee
2014-05-15 22:15               ` Greg Kroah-Hartman
2014-05-16  1:42                 ` Michael H. Warfield
2014-05-16  7:56                   ` Richard Weinberger
2014-05-16 19:20                   ` James Bottomley
2014-05-16 19:42                     ` Michael H. Warfield
2014-05-16 19:52                       ` [lxc-devel] Mount and other notifiers, was: " James Bottomley
2014-05-16 20:04                         ` Michael H. Warfield
2014-05-16  1:49                 ` [lxc-devel] " Serge Hallyn
2014-05-16  4:35                   ` Greg Kroah-Hartman
2014-05-16 14:06                     ` Seth Forshee
2014-05-16 15:28                       ` Michael H. Warfield
2014-05-16 15:43                         ` Seth Forshee
2014-05-16 18:57                       ` Greg Kroah-Hartman
2014-05-16 19:28                         ` James Bottomley
2014-05-16 20:18                           ` Seth Forshee
2014-05-20  0:04                             ` Eric W. Biederman
2014-05-20  1:14                               ` Michael H. Warfield
2014-05-20 14:18                                 ` Serge Hallyn
2014-05-20 14:21                               ` Seth Forshee
2014-05-21 22:00                                 ` Eric W. Biederman
2014-05-21 22:33                                   ` Serge Hallyn
2014-05-23 22:23                                     ` Eric W. Biederman
2014-05-28  9:26                                       ` Seth Forshee
2014-05-28 13:12                                         ` Serge E. Hallyn
2014-05-28 20:33                                           ` Eric W. Biederman
2014-05-18  2:42                           ` Serge E. Hallyn
2014-05-17  4:31                     ` Eric W. Biederman
2014-05-17 16:01                       ` Seth Forshee
2014-05-18  2:44                         ` Serge E. Hallyn
2014-05-19 13:27                           ` Seth Forshee
2014-05-20 14:15                             ` Serge Hallyn
2014-05-20 14:26                               ` Serge Hallyn
2014-05-17 12:57                     ` Michael H. Warfield
2014-05-15 18:25             ` Richard Weinberger
2014-05-15 19:50               ` Serge Hallyn
2014-05-15 20:13                 ` Richard Weinberger
2014-05-15 20:26                   ` Serge E. Hallyn
2014-05-15 20:33                     ` Richard Weinberger
2014-05-19 20:22                     ` Andy Lutomirski
2014-05-20 14:19                       ` Serge Hallyn
2014-05-23  8:20                         ` Marian Marinov
2014-05-23 13:16                           ` James Bottomley
2014-05-23 16:39                             ` Andy Lutomirski
2014-05-24 22:25                             ` Serge Hallyn
2014-05-25  8:12                               ` James Bottomley
2014-05-25 22:24                                 ` Serge E. Hallyn
2014-05-28  7:02                                   ` James Bottomley
2014-05-28 13:49                                     ` Serge 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=20140515174254.GM21073@ubuntumail \
    --to=serge.hallyn@ubuntu.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=arnd@arndb.de \
    --cc=axboe@kernel.dk \
    --cc=ebiederm@xmission.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lxc-devel@lists.linuxcontainers.org \
    --cc=mhw@WittsEnd.com \
    --cc=serge.hallyn@canonical.com \
    /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 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).