From 3b07625ad667bf586ae5e3b2ca579933dc261dbe Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 11 Sep 2013 00:54:20 +0200 Subject: gnu: vm: Create shadow files with the right format. * gnu/system/vm.scm (passwd-file): When SHADOW? is true, use the right shadow(5) format. Always add a trailing newline. --- gnu/system/vm.scm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'gnu/system') diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 5128bdfd29..7ad87254d8 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -367,21 +367,25 @@ (define* (passwd-file store accounts #:key shadow?) "Return a password file for ACCOUNTS, a list of vectors as returned by 'getpwnam'. If SHADOW? is true, then it is a /etc/shadow file, otherwise it is a /etc/passwd file." - ;; XXX: The resulting file is world-readable, so don't rely on it! + ;; XXX: The resulting file is world-readable, so beware when SHADOW? is #t! (define contents (let loop ((accounts accounts) (result '())) (match accounts ((#(name pass uid gid comment home-dir shell) rest ...) (loop rest - (cons (string-append name - ":" (if shadow? pass "x") - ":" (number->string uid) - ":" (number->string gid) - ":" comment ":" home-dir ":" shell) + (cons (if shadow? + (string-append name + ":" ; XXX: use (crypt PASS …)? + ":::::::") + (string-append name + ":" "x" + ":" (number->string uid) + ":" (number->string gid) + ":" comment ":" home-dir ":" shell)) result))) (() - (string-concatenate-reverse result))))) + (string-join (reverse result) "\n" 'suffix))))) (add-text-to-store store (if shadow? "shadow" "passwd") contents '())) -- cgit v1.2.3