Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

/sysroot private mount and /home -> /sysroot/home #2086

Closed
cgwalters opened this issue Apr 27, 2020 · 4 comments · Fixed by #3292
Closed

/sysroot private mount and /home -> /sysroot/home #2086

cgwalters opened this issue Apr 27, 2020 · 4 comments · Fixed by #3292

Comments

@cgwalters
Copy link
Member

Related: #2085

Reported on IRC, today gnome-continuous uses /home ➡️ /sysroot/home but this conflicts with #1438 if the user creates mounts in their home directory.

I think basically everyone should use /var/home, but probably ostree should either disable the private mount for /sysroot if we detect these symlinks.

gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue Apr 27, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue Apr 27, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
@valentindavid
Copy link
Contributor

I have noticed that if I remove totally /home ➡️ var/home, then Flatpak applications with --filesystem=host do not have access to home directory, unless they also have --filesystem=home.

So it seems that home should be defined within /var/home in /etc/passwd, but the symlink should still exist for flatpak application to work correctly. (I still have to test that).

@jlebon
Copy link
Member

jlebon commented Apr 28, 2020

So it seems that home should be defined within /var/home in /etc/passwd

Yes, note rpm-ostree for example does this: coreos/rpm-ostree#1726.

@valentindavid
Copy link
Contributor

I can confirm that for Flatpak applications like org.flatpak.Builder need to have both the /home ➡️ var/home AND the home directory defined in /etc/passwd should be using /var/home. I have just tested it.

It is very peculiar that removing the symlink breaks flatpak.

gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue Apr 28, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 1, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 1, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 2, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 3, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 3, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 4, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 5, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 5, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 6, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 6, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 7, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 7, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 9, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 9, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 10, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 10, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 11, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue May 28, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
gnomesysadmins pushed a commit to GNOME/gnome-build-meta that referenced this issue Jun 2, 2020
Otherwise flatpak'ed Buildstream and flatpak'ed Flatpak Builder do not work.

ostreedev/ostree#2086
@dbnicholson
Copy link
Member

We hit a very related issue in Endless OS recently that's caused by /sysroot's private mount propagation. We have a test mode that mounts an overlay on /sysroot (and other disk backed mounts) so that you can make broad changes to the
system and have them discarded when the system is shut down. If a process is started with a separate mount namespace before test mode is invoked, then that process will not inherit the /sysroot overlay. This was causing new user home directories to persist in /sysroot/home since accountsservice started using systemd sandboxing features a couple years ago, but it just hit Endless OS early this year and apparently no one has run the test mode since.

As it turns out, I think private /sysroot is solving the problem the wrong way. That was added to prevent submounts in /var from propagating back to /sysroot/deploy/.../var. That's very useful, but private mount propagation is a very large hammer for it since it stops all mount propagation. Instead, I think it's better if /sysroot is the default shared and /var is made a slave so that it receives mount events from /sysroot but not vice versa. Then you retain the behavior that /var submounts don't propagate back to /sysroot, but submounts of /sysroot propagate in the completely normal way. This is how systemd and toolbox setup mount namespaces.

dbnicholson added a commit to dbnicholson/ostree that referenced this issue Aug 30, 2024
Back in 2b8d586, /sysroot was changed to be a private mount so that
submounts of /var do not propagate back to the stateroot /var. That's
laudible, but it makes /sysroot different than every other shared mount
in the root namespace. In particular, it means that submounts of
/sysroot do not propagate into separate mount namespaces.

Rather than make /sysroot private, make /var a slave+shared mount so
that it receives mount events from /sysroot but not vice versa. That
achieves the same effect of preventing /var submount events from
propagating back to /sysroot while allowing /sysroot mount events to
propagate forward like every other system mount.

The mount propagation flags are applied as options in the generated
var.mount unit. This depends on a mount(8) feature that has been present
since util-linux 2.23. That's available in RHEL 7 and every non-EOL
Debian and Ubuntu release. Applying the propagation from var.mount fixes
a small race, too. Previously, if a /var submount was added before
/sysroot was made private, it would have propagated back into /sysroot.
That was possible since ostree-remount.service orders itself after
var.mount but not before any /var submounts.

Fixes: ostreedev#2086
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants