guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 7b9c30de1fba4ec190ca7fb6f2d85ddc802f7778
Author: Ludovic Courtès <[email protected]>
AuthorDate: Wed Dec 17 18:01:04 2025 +0100

    environment: Do not attempt to map GID 0 when invoked as root.
    
    * guix/scripts/environment.scm (launch-environment/container): Set ‘gid’ to
    1000 when ‘getgid’ returns zero.
    
    Fixes: guix/guix#4234
    Reported-by: Maxim Cournoyer <[email protected]>
    Change-Id: I781f2939dfd3cda23373d2fa03e288995bce9eb9
---
 guix/scripts/environment.scm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 1b3b1312ea..b2e715c6dd 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -828,7 +828,13 @@ WHILE-LIST."
      (let* ((cwd      (getcwd))
             (home     (getenv "HOME"))
             (uid      (if user 1000 (getuid)))
-            (gid      (if user 1000 (getgid)))
+            (gid      (if user
+                          1000
+                          ;; When running as root, always map a non-zero GID
+                          ;; or writing to 'gid_map' would fail with EPERM.
+                          (match (getgid)
+                            (0 1000)
+                            (gid gid))))
 
             ;; On a foreign distro, the name service switch might be
             ;; dysfunctional and 'getpwuid' throws.  Don't let that hamper

Reply via email to