GNU bug report logs -
#75810
[PATCH 0/6] Rootless guix-daemon
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Fri, 24 Jan 2025 17:24:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #101 received at 75810 <at> debbugs.gnu.org (full text, mbox):
Hello!
Here’s an updated version, addressing most issues brought up
by Reepca, also available from
<https://codeberg.org/civodul/guix/src/branch/wip-rootless-daemon>.
Main changes compared to v2:
• Derivation inputs and / are mounted read-only; additional
tests check the ability to write to these, to /tmp, to
/dev/{full,null}, and to remount any of these as read-write.
• Unit files for systemd tweaked so that (1) guix-daemon sees
a private read-write mount of the store, and (2) gnu-store.mount
actually remounts the store read-only after guix-daemon has
started.
• ‘DerivationGoal::deleteTmpDir’ bails out when it fails to
chown ‘tmpDir’ (i.e., it does not try to “pivot” the /top
sub-directory).
Did I forget anything, Reepca?
The one observable difference compared to current guix-daemon
operational mode is that, in the build environment, writing to
the root file system results in EROFS instead of EPERM, as you
pointed out earlier. That’s not great but probably acceptable.
We’ll only know whether this is a problem in practice once we’ve
run the test suites of tens of thousands of packages.
I tested this patch series by:
• running ‘make check’;
• manually running ‘guix-install.sh’ in a Debian VM, as
explained before.
Next up:
• automating ‘guix-install.sh’ VM tests;
• updating ‘guix-service-type’ to optionally support
unprivileged guix-daemon.
I think these two bits can come later though.
Thoughts?
Ludo’.
Ludovic Courtès (11):
daemon: Use ‘close_range’ where available.
daemon: Bind-mount all the inputs, not just directories.
daemon: Remount inputs as read-only.
daemon: Remount root directory as read-only.
daemon: Allow running as non-root with unprivileged user namespaces.
tests: Run in a chroot and unprivileged user namespaces.
daemon: Create /var/guix/profiles/per-user unconditionally.
daemon: Drop Linux ambient capabilities before executing builder.
daemon: Move comments where they belong.
etc: systemd services: Run ‘guix-daemon’ as an unprivileged user.
guix-install.sh: Support the unprivileged daemon where possible.
build-aux/test-env.in | 14 ++-
config-daemon.ac | 5 +-
etc/gnu-store.mount.in | 3 +-
etc/guix-daemon.service.in | 20 +++-
etc/guix-install.sh | 108 ++++++++++++++----
guix/substitutes.scm | 4 +-
nix/libstore/build.cc | 219 ++++++++++++++++++++++++++----------
nix/libstore/local-store.cc | 30 +++--
nix/libutil/util.cc | 23 +++-
tests/processes.scm | 9 +-
tests/store.scm | 206 +++++++++++++++++++++++++++------
11 files changed, 494 insertions(+), 147 deletions(-)
base-commit: 00787cd61611d74d3e54b160e94176905d36ef39
--
2.48.1
This bug report was last modified 56 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.