installer: Ask for the root account password.
Fixes <https://bugs.gnu.org/35399>. * gnu/installer/newt/user.scm (run-root-password-page): New procedure. * gnu/installer/user.scm (users->configuration): Filter out the "root" account. * gnu/installer/final.scm (create-user-database): Set 'uid' field in 'user-account' form.
This commit is contained in:
parent
399c31d40a
commit
91a7c4998f
|
@ -67,8 +67,12 @@ USERS."
|
||||||
|
|
||||||
(define users*
|
(define users*
|
||||||
(map (lambda (user)
|
(map (lambda (user)
|
||||||
|
(define root?
|
||||||
|
(string=? "root" (user-name user)))
|
||||||
|
|
||||||
(sys:user-account (name (user-name user))
|
(sys:user-account (name (user-name user))
|
||||||
(group "users")
|
(group "users")
|
||||||
|
(uid (if root? 0 #f))
|
||||||
(home-directory
|
(home-directory
|
||||||
(user-home-directory user))
|
(user-home-directory user))
|
||||||
(password (crypt (user-password user)
|
(password (crypt (user-password user)
|
||||||
|
|
|
@ -104,6 +104,14 @@
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(destroy-form-and-pop form)))))))
|
(destroy-form-and-pop form)))))))
|
||||||
|
|
||||||
|
(define (run-root-password-page)
|
||||||
|
;; TRANSLATORS: Leave "root" untranslated: it refers to the name of the
|
||||||
|
;; system administrator account.
|
||||||
|
(run-input-page (G_ "Please choose a password for the system \
|
||||||
|
administrator (\"root\").")
|
||||||
|
(G_ "System administrator password")
|
||||||
|
#:input-flags FLAG-PASSWORD))
|
||||||
|
|
||||||
(define (run-user-page)
|
(define (run-user-page)
|
||||||
(define (run users)
|
(define (run users)
|
||||||
(let* ((listbox (make-listbox
|
(let* ((listbox (make-listbox
|
||||||
|
@ -181,4 +189,9 @@
|
||||||
users))))
|
users))))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(destroy-form-and-pop form))))))
|
(destroy-form-and-pop form))))))
|
||||||
(run '()))
|
|
||||||
|
;; Add a "root" user simply to convey the root password.
|
||||||
|
(cons (user (name "root")
|
||||||
|
(home-directory "/root")
|
||||||
|
(password (run-root-password-page)))
|
||||||
|
(run '())))
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
(define-module (gnu installer user)
|
(define-module (gnu installer user)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
|
#:use-module (srfi srfi-1)
|
||||||
#:export (<user>
|
#:export (<user>
|
||||||
user
|
user
|
||||||
make-user
|
make-user
|
||||||
|
@ -39,14 +40,18 @@
|
||||||
|
|
||||||
(define (users->configuration users)
|
(define (users->configuration users)
|
||||||
"Return the configuration field for USERS."
|
"Return the configuration field for USERS."
|
||||||
|
(define (user->sexp user)
|
||||||
|
`(user-account
|
||||||
|
(name ,(user-name user))
|
||||||
|
(group ,(user-group user))
|
||||||
|
(home-directory ,(user-home-directory user))
|
||||||
|
(supplementary-groups '("wheel" "netdev"
|
||||||
|
"audio" "video"))))
|
||||||
|
|
||||||
`((users (cons*
|
`((users (cons*
|
||||||
,@(map (lambda (user)
|
,@(filter-map (lambda (user)
|
||||||
`(user-account
|
;; Do not emit a 'user-account' form for "root".
|
||||||
(name ,(user-name user))
|
(and (not (string=? (user-name user) "root"))
|
||||||
(group ,(user-group user))
|
(user->sexp user)))
|
||||||
(home-directory ,(user-home-directory user))
|
users)
|
||||||
(supplementary-groups
|
%base-user-accounts))))
|
||||||
(quote ("wheel" "netdev"
|
|
||||||
"audio" "video")))))
|
|
||||||
users)
|
|
||||||
%base-user-accounts))))
|
|
||||||
|
|
Loading…
Reference in New Issue