mount (silently) ignores options for bind mounts
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linux |
Unknown
|
Unknown
|
|||
Util-Linux-ng |
Fix Released
|
Unknown
|
|||
util-linux (Ubuntu) |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Binary package hint: util-linux
mount ignores any options given for bind mounts and adds an incorrect line to mtab.
there is (at least) one exception: the option ro (== read-only). it warns that the bind mount is mounted read-write, if one tries to use that option together with bind.
some examples of the current behavior (with comments):
~/bla# mkdir foo
~/bla# mkdir bar
~/bla# touch foo/test
~/bla# mount foo/ bar/ -obind,ro
mount: warning: bar/ seems to be mounted read-write.
# at least it says so
~/bla# rm bar/test
~/bla# ls bar/test
ls: cannot access bar/test: No such file or directory
# expected after that warning
~/bla# touch foo/test
~/bla# mount foo/ bar/ -obind,
~/bla# mount foo/ bar/ -obind,
~/bla# mount foo/ bar/ -obind,
~/bla# mount
...
/root/bla/foo on /root/bla/bar type none (rw,bind)
/root/bla/foo on /root/bla/bar type none (rw,bind,
/root/bla/foo on /root/bla/bar type none (rw,bind,
/root/bla/foo on /root/bla/bar type none (rw,bind,
# mount adds bogus lines to mtab...
~/bla# ls bar/
test
# but at least it does mount
umount bar
mount
...
/root/bla/foo on /root/bla/bar type none (rw,bind)
/root/bla/foo on /root/bla/bar type none (rw,bind,
/root/bla/foo on /root/bla/bar type none (rw,bind,
# and umount only removes one (bogus) line per execution :)
the behavior is kinda documented in the manpage (well the bogus lines are clearly a bug (two actually), but i don't care right now).
a workaround is to first bind mount and then use the remount option for setting other options e.g.:
~/bla# mount foo/ bar/ -obind
~/bla# mount bar/ -oremount,ro
~/bla# rm bar/test
rm: cannot remove `bar/test': Read-only file system
the problem is... this does not work with fstab:
neither setting up one line with options bind,ro such as
/root/bla/foo /root/bla/bar none bind,ro
(this gives the same warning as above)
nor using two, one with the remount option:
/root/bla/foo /root/bla/bar none bind
/root/bla/foo /root/bla/bar none remount,ro
(this even fails silently to remount read-only!)
the warning was introduced by Karel Zak in november 2009. i read that debian had a patch for correcting at least some of the issues above, but i could not find anything.
one workaround for certain situations could be to use pam_mount.
this war reported/tested on ubuntu 10.10 with kernel 2.6.35-25 and mount 2.17.2-
Changed in util-linux-ng: | |
status: | Unknown → New |
tags: | added: patch |
Changed in util-linux (Ubuntu): | |
status: | New → Triaged |
Changed in util-linux (Ubuntu): | |
importance: | Undecided → Medium |
no longer affects: | linux (Ubuntu) |
Changed in util-linux-ng: | |
status: | New → Fix Released |
Changed in util-linux (Ubuntu): | |
status: | Triaged → Fix Released |
i hacked together a patch that retries to bind mount once with MS_REMOUNT added to the flags instead of printing out the warning. it seems to work, but i don't have the insights if it may break anything.
with this it is possible to bind mount a directory in fstab with options "bind,ro", as well as mounting it on the command line in one line (without remount,ro).
it does not address other issues mentioned in my original report.
jones please comment! thanks