From b297934437932de730432629b361fcb422accbb7 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 18 Nov 2018 23:34:19 +0100 Subject: activation: Aways pass '-d HOME' to 'useradd'. Fixes . Reported by fps. * gnu/build/activation.scm (add-user): Always pass "-d HOME" when HOME is true. Pass "--create-home" only when HOME, CREATE-HOME?, and SYSTEM? are true. (activate-users+groups): Pass #:create-home? create-home? to 'ensure-user'. * gnu/tests/base.scm (run-basic-test)["accounts"]: Test 'passwd:dir' as well. --- gnu/build/activation.scm | 17 +++++++++-------- gnu/tests/base.scm | 11 ++++++++--- 2 files changed, 17 insertions(+), 11 deletions(-) (limited to 'gnu') diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index 68ecd6bc71..0e77677de1 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -148,11 +148,15 @@ properties. Return #t on success." `("-G" ,(string-join supplementary-groups ",")) '()) ,@(if comment `("-c" ,comment) '()) - ,@(if (and home create-home?) - (if (file-exists? home) - `("-d" ,home) ; avoid warning from 'useradd' - `("-d" ,home "--create-home")) + ,@(if home `("-d" ,home) '()) + + ;; Home directories of non-system accounts are created by + ;; 'activate-user-home'. + ,@(if (and home create-home? system? + (not (file-exists? home))) + '("--create-home") '()) + ,@(if shell `("-s" ,shell) '()) ,@(if password `("-p" ,password) '()) ,@(if system? '("--system") '()) @@ -229,10 +233,7 @@ 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?) + #:create-home? create-home? #:shell shell #:password password) diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index 02882f4b46..03392cef38 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -154,10 +154,15 @@ info --version") (#f (reverse result)) (x (loop (cons x result)))))) marionette))) - (lset= string=? - (map passwd:name users) + (lset= equal? + (map (lambda (user) + (list (passwd:name user) + (passwd:dir user))) + users) (list - #$@(map user-account-name + #$@(map (lambda (account) + `(list ,(user-account-name account) + ,(user-account-home-directory account))) (operating-system-user-accounts os)))))) (test-assert "shepherd services" -- cgit v1.2.3