diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-05-18 10:08:55 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-05-20 10:17:10 +0200 |
commit | 51fe9cd38d4d64b5fade8a899d5323da0e217d5c (patch) | |
tree | 27dd58ab42b8517bb2a0805dff813bec40b9a060 /gnu/build/activation.scm | |
parent | f3f8938fe0c07d221ebccdf5a9a0029fda01f036 (diff) | |
download | guix-51fe9cd38d4d64b5fade8a899d5323da0e217d5c.tar guix-51fe9cd38d4d64b5fade8a899d5323da0e217d5c.tar.gz |
services: user-homes: Do not create home directories marked as no-create.
Fixes a bug whereby GuixSD would create the /nonexistent directory, from
user 'nobody', even though it has 'create-home-directory?' set to #f.
* gnu/build/activation.scm (activate-users+groups): Add comment for
\#:create-home?.
(activate-user-home)[ensure-user-home]: Skip when CREATE-HOME? is #f or
SYSTEM? is #t.
* gnu/tests/base.scm (run-basic-test)["no extra home directories"]: New
tests.
Diffstat (limited to 'gnu/build/activation.scm')
-rw-r--r-- | gnu/build/activation.scm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index beee56d437..a1d2a9cc7d 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -227,7 +227,11 @@ numeric gid or #f." #:supplementary-groups supplementary-groups #:comment comment #:home home + + ;; Home directories of non-system accounts are created by + ;; 'activate-user-home'. #:create-home? (and create-home? system?) + #:shell shell #:password password) @@ -282,7 +286,10 @@ they already exist." (match-lambda ((name uid group supplementary-groups comment home create-home? shell password system?) - (unless (or (not home) (directory-exists? home)) + ;; The home directories of system accounts are created during + ;; activation, not here. + (unless (or (not home) (not create-home?) system? + (directory-exists? home)) (let* ((pw (getpwnam name)) (uid (passwd:uid pw)) (gid (passwd:gid pw))) |