From: ebiederm@xmission.com (Eric W. Biederman)
To: "Serge E. Hallyn" <serue@us.ibm.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
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: Fri, 12 Sep 2008 20:12:18 -0700 [thread overview]
Message-ID: <m1tzck68od.fsf@frodo.ebiederm.org> (raw)
In-Reply-To: <20080912220802.GA23230@us.ibm.com> (Serge E. Hallyn's message of "Fri, 12 Sep 2008 17:08:02 -0500")
"Serge E. Hallyn" <serue@us.ibm.com> writes:
> Ok, but this is all done as root. Kind of a silly thing for root to
> do :)
There are less silly examples like setting up a chroot type
environment contained in a mount namespace and having a kernel oops
and then not being able to delete all of your files.
> So in order for me as an unprivileged user to pin a dentry by mounting
> over it, I have to have write permission to the dentry to begin with
> as well as the dentry being under a user=hallyn mount.
That second condition is interesting requiring write permission of the
dentry. I thought we had obviated the need for that when we added
ownership to the mounts themselves. In this case at least it shouldn't
it be write permission on the directory containing the dentry.
>> Now you can't create /etc/passwd.new and rename it to /etc/passwd.
>> Stopping adduser from working.
>>
>> As Miklos said this can apply to any file or any directory, so it can
>> be a DOS against any other user on the system.
>
> Except I need to own the mount as well as the dentry. So after
> root does
>
> mmount --bind -o user=hallyn /home/hallyn /home/hallyn
> mmount --bind -o user=hallyn /home/serge /home/serge
>
> if user serge (uid 501) tries to
>
> mmount --bind /etc /home/hallyn/etc
> mmount --bind /etc /home/serge/etc
>
> permission for the first will be denied because serge does not
> have write perms to /home/hallyn/etc, and permission for the second
> will be denied because only hallyn may mount under /home/serge.
>
> If root properly did
>
> mmount --bind -o user=hallyn /home/hallyn /home/hallyn
> mmount --bind -o user=serge /home/serge /home/serge
>
> and then hallyn does
>
> mmount --bind /etc /home/hallyn/etc
>
> and serge does
>
> mmount --bind /home/hallyn/etc /home/serge/etc
>
> then hallyn can still ummount /home/hallyn/etc.
>
> And we've decided that users cannot (for now) do shared mounts.
> So I'm still not sure where there is the potential for danger?
Ok. Let's pick on something a little more interesting.
root does:
mmount --bind -o user=hallyn /home/hallyn /home/hallyn
hallyn does:
mount --bind /tmp /home/hallyn/tmp
touch dummy
mount --bind dummy /home/hallyn/tmp/some_shared_file_I_have_write_access_to.
Which allows me to transform write permissions into the ability to
deny someone else the ability to delete a file.
This seems to mess up things like revoke.
At a practical level it is a real annoyance, regardless of the security
implications.
As a point of comparison plan9 does not have that restriction.
Eric
next prev parent reply other threads:[~2008-09-13 3:15 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
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 [this message]
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=m1tzck68od.fsf@frodo.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=serue@us.ibm.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox