guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/04: environment: Create /etc/group in containers.


From: guix-commits
Subject: 04/04: environment: Create /etc/group in containers.
Date: Tue, 26 Mar 2019 13:12:06 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 952afb6f8c209692e52f9561965ee39e143e1d88
Author: Ludovic Courtès <address@hidden>
Date:   Tue Mar 26 18:07:58 2019 +0100

    environment: Create /etc/group in containers.
    
    Reported by Pierre Neidhardt <address@hidden>.
    
    * guix/scripts/environment.scm (launch-environment/container): Create
    GROUPS and call 'write-group'.
    * tests/guix-environment-container.sh: Test it.
---
 guix/scripts/environment.scm        | 4 ++++
 tests/guix-environment-container.sh | 8 +++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 597a5b4..c27edc7 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -469,6 +469,9 @@ will be used for the passwd entry.  LINK-PROFILE? creates a 
symbolic link from
                          (directory (if user
                                         (string-append "/home/" user)
                                         (passwd:dir pwd))))))
+            (groups   (list (group-entry (name "users") (gid 0))
+                            (group-entry (gid 65534) ;the overflow GID
+                                         (name "overflow"))))
             (home-dir (password-entry-directory passwd))
             ;; Bind-mount all requisite store items, user-specified mappings,
             ;; /bin/sh, the current working directory, and possibly networking
@@ -528,6 +531,7 @@ will be used for the passwd entry.  LINK-PROFILE? creates a 
symbolic link from
             ;; sharing the host's network namespace.
             (mkdir-p "/etc")
             (write-passwd (list passwd))
+            (write-group groups)
 
             ;; For convenience, start in the user's current working
             ;; directory rather than the root directory.
diff --git a/tests/guix-environment-container.sh 
b/tests/guix-environment-container.sh
index 059c4d9..f2221af 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -46,9 +46,15 @@ fi
 
 if test "x$USER" = "x"; then USER="`id -un`"; fi
 
-# Check whether /etc/passwd is valid.
+# Check whether /etc/passwd and /etc/group are valid.
 guix environment -C --ad-hoc --bootstrap guile-bootstrap \
      -- guile -c "(exit (string=? \"$USER\" (passwd:name (getpwuid 
(getuid)))))"
+guix environment -C --ad-hoc --bootstrap guile-bootstrap \
+     -- guile -c '(exit (string? (group:name (getgrgid (getgid)))))'
+guix environment -C --ad-hoc --bootstrap guile-bootstrap \
+     -- guile -c '(use-modules (srfi srfi-1))
+                  (exit (every group:name
+                               (map getgrgid (vector->list (getgroups)))))'
 
 # Make sure file-not-found errors in mounts are reported.
 if guix environment --container --ad-hoc --bootstrap guile-bootstrap \



reply via email to

[Prev in Thread] Current Thread [Next in Thread]