All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jamie Lokier <jamie@shareable.org>
To: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
Cc: Eric Van Hensbergen <ericvh@gmail.com>, linux-fsdevel@vger.kernel.org
Subject: Re: [RFC][2.6 patch] Allow creation of new namespaces during mount system call
Date: Wed, 20 Apr 2005 10:45:58 +0100	[thread overview]
Message-ID: <20050420094558.GB10167@mail.shareable.org> (raw)
In-Reply-To: <20050420033304.GO13052@parcelfarce.linux.theplanet.co.uk>

Al Viro wrote:
> Most of the code is already there - do_fork() has to do such stuff anyway.
> So how about adding sys_unshare(flags) that would do that job?  Flags would
> correspond to those of clone(2), except that all these guys would be
> "what do we unshare" instead of "what do we leave shared".

That would let a program split off into its own namespace, but that's
not really what's needed for FUSE.

For FUSE, what's needed is that a user can mount something, and the
mounted fs is visible only to that user, but it's visible to _all_ of
the user's processes.

For example, as a non-root user I should be able to mount an "ftpfs"
or "sshfs" on /home/jamie/mnt/remote in one shell window, and be able
to cd inside that directory from a different shell window.  But other
users, including root, should not be able to see the mounted content
of that directory.  (The mounted fs is really just an interface to a
program owned by me - a program running ftp or ssh in this case).

We think namespaces are a nice way to do that: making a user-owned
filesystem only visible to a user.  But the mechanism of CLONE_NEWNS
does not work, because it presumes namespace divisions are only
propagated over parent-child divisions, like environment variables.

What we really want is a mount point that propagates across all the
processes owned by one user, but is not there for other users.

The shared subtree mechanism seems like it has the basic ideas for this.

> b) I _really_ don't like the idea of messing with the parent.  Make it
> a shell builtin if you want to affect shell behaviour; the same reason
> why cd is a builtin and not an external command.

I agree.  That's just a poor hack to let a "usermount" program alter
the namespace of the shell it's called from.  It won't work in general.

> c) I would be really, really careful with implications of "let user
> do whatever he wants" - that certainly should include bindings and
> that can create heaps of fun for suid stuff.  More comments when
> I get around to digging through FUSE thread...

Probably the best thing to do for suid programs is this:

   - Have a namespace per user.  The user's namespace will be entered
     by the "login" program somehow.

   - All logins to the same user acquire the same per-user namespace.
     This isn't possible at the moment; it would be a kernel extension
     + administrative change to login.

   - Mounts done by the user are private to the per-user namespace.

   - Mounts done by the user are still restricted to directories writable
     by the user, so he cannot modify /etc or /usr - your /etc/shadow
     attack is not possible.

   - suid programs run by the user inherit the same per-user namespace.
     In other words, the per-user namespace is entered at login time
     (by the login program doing a syscall), not when changing uid.
     In this way, a user can pass a private pathname to an suid
     program, and the suid program will be able to operate on that
     file properly.

-- Jamie

  reply	other threads:[~2005-04-20  9:46 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-19 22:13 [RFC][2.6 patch] Allow creation of new namespaces during mount system call Eric Van Hensbergen
2005-04-19 22:23 ` Al Viro
2005-04-19 23:53   ` Eric Van Hensbergen
2005-04-20  3:33     ` Al Viro
2005-04-20  9:45       ` Jamie Lokier [this message]
2005-04-20 10:27         ` Al Viro
2005-04-20 12:03           ` Jamie Lokier
2005-04-20 12:39             ` Al Viro
2005-04-20 16:51               ` Ram
2005-04-20 17:09                 ` Al Viro
2005-04-20 17:53                   ` Miklos Szeredi
     [not found]                     ` <a4e6962a0504201107518416e9@mail.gmail.com>
2005-04-20 18:18                       ` Eric Van Hensbergen
2005-04-20 18:34                         ` Miklos Szeredi
2005-04-20 20:43                           ` Jamie Lokier
2005-04-20 20:54                             ` Al Viro
2005-04-20 22:16                               ` Jamie Lokier
2005-04-20 21:08                     ` Al Viro
2005-04-20 22:19                       ` Jamie Lokier
2005-04-20 18:00                   ` Eric Van Hensbergen
2005-04-20 18:33                   ` Ram
2005-04-20 22:04                     ` Jamie Lokier
2005-04-30  8:56                       ` Christoph Hellwig
2005-04-30 15:01                         ` Jamie Lokier
2005-05-11  9:05                           ` Christoph Hellwig
2005-04-21  7:33                   ` Mount bind filehandle (Was: Re: [RFC][2.6 patch] Allow creation of new namespaces during mount system call) Jan Hudec
2005-04-21  8:09                     ` Christoph Hellwig
2005-04-21  9:32                       ` Jan Hudec
2005-04-20 18:57                 ` [RFC][2.6 patch] Allow creation of new namespaces during mount system call Bryan Henderson
2005-04-20 19:37                   ` Miklos Szeredi
2005-04-21  0:08                     ` Bryan Henderson
2005-04-21  8:06                       ` Miklos Szeredi
2005-04-21 13:33                         ` [RFC][patch] mount permissions (was: [RFC][2.6 patch] Allow ...) Miklos Szeredi
2005-04-21 16:57                         ` [RFC][2.6 patch] Allow creation of new namespaces during mount system call Bryan Henderson
2005-04-20 20:51                   ` Al Viro
2005-04-21  0:23                     ` Bryan Henderson
2005-04-21  0:32                       ` Al Viro
2005-04-21  8:10                       ` Christoph Hellwig
2005-04-20 21:09                   ` Ram
2005-04-21  0:42                     ` Bryan Henderson
2005-04-21 19:10                       ` Ram
2005-04-20 18:25               ` Bryan Henderson
2005-04-20 12:48         ` Jan Hudec
2005-04-20 22:13           ` Jamie Lokier
2005-04-21 10:09             ` Jan Hudec
2005-04-21 18:44               ` Jamie Lokier
2005-04-21 18:52                 ` Hiding secrets from root (Was: Re: [RFC][2.6 patch] Allow creation of new namespaces during mount system call) Jan Hudec
2005-04-21 20:35                   ` Jamie Lokier
2005-04-20 13:14       ` [RFC][2.6 patch] Allow creation of new namespaces during mount system call Eric Van Hensbergen
2005-04-20 13:55         ` Eric Van Hensbergen

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=20050420094558.GB10167@mail.shareable.org \
    --to=jamie@shareable.org \
    --cc=ericvh@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=viro@parcelfarce.linux.theplanet.co.uk \
    /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.