aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-03-26 18:07:58 +0100
committerLudovic Courtès <ludo@gnu.org>2019-03-26 18:11:52 +0100
commit952afb6f8c209692e52f9561965ee39e143e1d88 (patch)
tree21325fb90568cc4d7bec5ce8e05ebf8969f389d4
parent8a9922bdee875b3b5e1d928fc8e2121ffa99663a (diff)
downloadpatches-952afb6f8c209692e52f9561965ee39e143e1d88.tar
patches-952afb6f8c209692e52f9561965ee39e143e1d88.tar.gz
environment: Create /etc/group in containers.
Reported by Pierre Neidhardt <mail@ambrevar.xyz>. * guix/scripts/environment.scm (launch-environment/container): Create GROUPS and call 'write-group'. * tests/guix-environment-container.sh: Test it.
-rw-r--r--guix/scripts/environment.scm4
-rw-r--r--tests/guix-environment-container.sh8
2 files changed, 11 insertions, 1 deletions
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 597a5b4ab1..c27edc7982 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 059c4d9213..f2221af95b 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 \