Util-Linux package development
 help / color / mirror / Atom feed
From: "Yuriy M. Kaminskiy" <yumkam@gmail.com>
To: Karel Zak <kzak@redhat.com>
Cc: util-linux@vger.kernel.org
Subject: Re: unshare -m and mount propagation
Date: Mon, 18 Apr 2016 23:35:36 +0300	[thread overview]
Message-ID: <57154518.2040700@gmail.com> (raw)
In-Reply-To: <20160418174833.qwb7tnfzuf3wiokw@ws.net.home>

On 18.04.2016 20:48, Karel Zak wrote:
> On Mon, Apr 18, 2016 at 04:05:29PM +0300, Yuriy M. Kaminskiy wrote:
>> On 18.04.2016 15:22, Karel Zak wrote:
>>> On Mon, Apr 18, 2016 at 02:51:37PM +0300, Yuriy M. Kaminskiy wrote:
>>>> Karel Zak <kzak@redhat.com> writes:
>>>>
>>>>> On Fri, Mar 18, 2016 at 05:26:25AM +0300, Yuriy M. Kaminskiy wrote:
>>>>>> I think this issue should be at least documented. And, maybe, default
>>>>>> `--propagation` should be changed to `slave`.
>>>>>
>>>>> The reason why we use 'private' is that it's the kernel default for
>>>>> years and it's what has been expected by users for long time before we
>>>>> introduced --propagation and any unshare(1) default.
>>>>>
>>>>> The current --propagation default unifies things and makes unshare(1)
>>>>> portable to distributions where root fs is mounted as 'shared' (e.g.
>>>>> systemd distros) and all this in backwardly compatible way for users
>>
>> Opposite. It does not change anything for older systems, but breaks things
>> for new systems.
>>
>>>>> who have no clue about --propagation.
>>
>> And it is *especially* harmful for users that are not aware about
>> --propagation. As private (new 2.27+ default) break umount propagation, and
>> results in nasty surprises (up to data loss).
>
> Well, you see only umount propagation...

Because *breaking* it causes real problems?

> The problem is that the original implementation (try emulate by
> "--propagation unchanged") makes "unshare --mount" useless at all on
> systems with shared root fs.
>
> The very old (since year 2009) and very common use-case is:
>
>   # unshare --mount

      mount --make-rslave / # or --make-rprivate or whatever

>   # mount /dev/foo /mnt

And? I've posted how this could be solved *without* changing anything in 
unshare.

> and user expects that /mnt will be visible *only* in the session
> (namespace). This is the way how many users use unshare for years.
>
> Unfortunately, after systemd installation it does not work anymore
> and /mnt is visible everywhere. For users it's regression and it has
> been reported many many times.
>
> You can blame systemd, but the problem is that unshare(1) was not
> robust enough. So we have forced unshare to use "private" by default
> to keep the *original behavior* independently on root fs propagation
> flag.

You can have same effect with *slave* as default, with exception that 
host->guest mount/unmount propagation still works.
When kernel have to get rid of shared propagation (in userns), it 
downgrades shared mounts to *slave*, not to *private*.
When systemd itself downgrades shared propagation (for running service 
in new mount namespace; Protect*/Private*/etc), it also downgrades 
*shared* propagation to *slave*, not to *private*.

P.S. For sure, *any* of propagation variants have some or other 
drawbacks and corner cases; however, without special care about 
removable media (and alike), *private* has higher chance to beat you in 
a nasty way.

      reply	other threads:[~2016-04-18 20:35 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-18  2:26 unshare -m and mount propagation Yuriy M. Kaminskiy
2016-04-18 11:16 ` Karel Zak
2016-04-18 11:51   ` Yuriy M. Kaminskiy
2016-04-18 12:22     ` Karel Zak
2016-04-18 13:05       ` Yuriy M. Kaminskiy
2016-04-18 17:48         ` Karel Zak
2016-04-18 20:35           ` Yuriy M. Kaminskiy [this message]

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=57154518.2040700@gmail.com \
    --to=yumkam@gmail.com \
    --cc=kzak@redhat.com \
    --cc=util-linux@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox