diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-11-18 23:34:19 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-11-18 23:37:25 +0100 |
commit | b297934437932de730432629b361fcb422accbb7 (patch) | |
tree | 62a0351ee6ac44a546180ea448d24cfd691c4ad1 | |
parent | 564cf93f2aca60171b4b97559ffc6c952e73e8ed (diff) | |
download | patches-b297934437932de730432629b361fcb422accbb7.tar patches-b297934437932de730432629b361fcb422accbb7.tar.gz |
activation: Aways pass '-d HOME' to 'useradd'.
Fixes <https://bugs.gnu.org/33422>.
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.
-rw-r--r-- | gnu/build/activation.scm | 17 | ||||
-rw-r--r-- | gnu/tests/base.scm | 11 |
2 files changed, 17 insertions, 11 deletions
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" |