All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Serge E. Hallyn" <serue@us.ibm.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: ebiederm@xmission.com, akpm@linux-foundation.org,
	hch@infradead.org, viro@ZenIV.linux.org.uk,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: unprivileged mounts git tree
Date: Thu, 4 Sep 2008 08:28:04 -0500	[thread overview]
Message-ID: <20080904132804.GA14709@us.ibm.com> (raw)
In-Reply-To: <E1Kb8Y0-0008Gh-FP@pomaz-ex.szeredi.hu>

Quoting Miklos Szeredi (miklos@szeredi.hu):
> On Wed, 3 Sep 2008, Serge E. Hallyn wrote:
> > Quoting Miklos Szeredi (miklos@szeredi.hu):
> > > On Wed, 3 Sep 2008, Serge E. Hallyn wrote:
> > > > Ooh.
> > > > 
> > > > You predicate the turning of shared mount to a slave mount on
> > > > !capable(CAP_SYS_ADMIN).  But in fact it's the mount by a privileged
> > > > user, turning the mount into a user mount, which you want to convert.
> > > > So my series of steps was:
> > > > 
> > > > 	as root:
> > > > 		(1) mount --bind /mnt /mnt
> > > > 		(2) mount --make-rshared /mnt
> > > > 		(3) /usr/src/mmount-0.3/mmount --bind -o user=hallyn /mnt \
> > > > 			/home/hallyn/etc/mnt
> > > > 	as hallyn:
> > > > 		(4) mount --bind /usr /home/hallyn/etc/mnt/usr
> > > > 
> > > > You are turning mounts from shared->slave at step 4, but in fact we need
> > > > to do it at step 3, where we do have CAP_SYS_ADMIN.
> > > 
> > > Well, that's arguable: I think root should be able to shoot itself in
> > > the foot by doing step 3.
> > 
> > Maybe I'm not thinking right, but long-term is there any reason why we
> > should require privilege in order to do step 3, so long as the user has
> > read access to the source and write access to the destination?
> > 
> > I don't think there is.  Other than this glitch.  That's a powerful
> > reason to fix the glitch.
> 
> Agreed, without privileges it's unacceptable to allow step 3 as is.
> 
> > The other argument is that, frankly, I think most people are still
> > either unaware of, or confused by, mounts propagation.  Letting root
> > shoot himself in the foot is reasonable only to a point.
> 
> Hmm, I think there are infinite ways in which root can mess up mount
> propagation, and this is not even the worst.  I'm not trying to
> belittle this bug: done unprivileged it's unacceptable.  But with
> privileges, I really don't know if we should change the propagation
> semantics for this corner case, they are complicated enough already.
> 
> > > Generally we don't restrict what root can
> > > do.  OTOH I agree that current behavior is ugly in that it provides
> > > different semantics for privileged/non-privileged callers.
> > > 
> > > Perhaps it would be cleaner to simply not allow step 4, instead of
> > > playing tricks with changing the propagation type.
> > 
> > If the user or admin can simply (I haven't tested)
> > 
> > 	mmount --bind --make-rslave -o user=hallyn /mnt \
> > 		/home/hallyn/etc/mnt
> > 
> > then returning -EPERM if --make-rslave was not provided is reasonable
> > IMO.
> 
> Right, that sounds perfect.  the only problem is, bind mount currently
> ignores the propagation flags, for no good reason I can see.
> 
> That's a separate patch though.  I'll look into it.
> 
> Thanks,
> Miklos

Cool, thanks, Miklos :)

Are you going to revert the change forcing CL_SLAVE for
!capable(CAP_SYS_ADMIN)?  I don't think we want that - I think that
*within* a set of user mounts, propagation should be safe, right?

Will you be able to do this soon?  If not, should we just do the part
returning -EPERM when turning a shared mount into a user mount? 
Because I think that would then be ready for testing in -mm, and would
love to see it tested.

Were you going to push a patch to mount to do the user mounts, or
put sample code in Documentation, git log, or under samples/?

thanks,
-serge

  reply	other threads:[~2008-09-04 13:28 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-07 12:05 unprivileged mounts git tree Miklos Szeredi
2008-08-07 22:27 ` Serge E. Hallyn
2008-08-08  0:07   ` Eric W. Biederman
2008-08-08  0:25     ` Serge E. Hallyn
2008-08-25 11:01       ` Miklos Szeredi
2008-08-27 15:36         ` Serge E. Hallyn
2008-08-27 15:55           ` Miklos Szeredi
2008-08-27 18:46             ` Serge E. Hallyn
2008-09-03 18:45               ` Miklos Szeredi
2008-09-03 21:54                 ` Serge E. Hallyn
2008-09-03 22:02                 ` Serge E. Hallyn
2008-09-03 22:25                   ` Miklos Szeredi
2008-09-03 22:43                     ` Serge E. Hallyn
2008-09-04  6:42                       ` Miklos Szeredi
2008-09-04 13:28                         ` Serge E. Hallyn [this message]
2008-09-04 14:06                           ` Miklos Szeredi
2008-09-04 15:40                             ` Miklos Szeredi
2008-09-04 16:17                               ` Serge E. Hallyn
2008-09-04 17:42                                 ` Miklos Szeredi
2008-09-04 17:48                                   ` Serge E. Hallyn
2008-09-04 18:03                                     ` Miklos Szeredi
2008-09-04 18:49                                       ` Serge E. Hallyn
2008-09-04 22:26                                         ` Miklos Szeredi
2008-09-04 23:32                                           ` Serge E. Hallyn
2008-09-05 15:31                               ` Serge E. Hallyn
2008-09-09 13:34                                 ` Miklos Szeredi
2008-09-11 10:37                                   ` Eric W. Biederman
2008-09-11 14:43                                     ` Miklos Szeredi
2008-09-11 15:20                                       ` Serge E. Hallyn
2008-09-11 15:44                                         ` Miklos Szeredi
2008-09-11 18:54                                         ` Eric W. Biederman
2008-09-12 22:08                                           ` Serge E. Hallyn
2008-09-13  3:12                                             ` Eric W. Biederman
2008-09-14  1:56                                               ` Serge E. Hallyn
2008-09-14  3:06                                                 ` Eric W. Biederman
2008-09-30 19:39                                                   ` Serge E. Hallyn
2008-10-06 11:05                                                     ` Miklos Szeredi
2008-09-11 19:04                                       ` Eric W. Biederman
2008-09-11 19:58                                         ` Eric W. Biederman

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=20080904132804.GA14709@us.ibm.com \
    --to=serue@us.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=ebiederm@xmission.com \
    --cc=hch@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=viro@ZenIV.linux.org.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.