git: 3e1101f29b4f - main - bsdinstall: allow setting the root password via env variables
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 05 Aug 2022 15:10:53 UTC
The branch main has been updated by brd:
URL: https://cgit.FreeBSD.org/src/commit/?id=3e1101f29b4ff39a67eb10a5b41b727d8702f0f5
commit 3e1101f29b4ff39a67eb10a5b41b727d8702f0f5
Author: Brad Davis <brd@FreeBSD.org>
AuthorDate: 2022-08-05 15:10:21 +0000
Commit: Brad Davis <brd@FreeBSD.org>
CommitDate: 2022-08-05 15:10:21 +0000
bsdinstall: allow setting the root password via env variables
Reviewed by: 0mp, allanjude, asiciliano, dteske, pauamma, rpokala, sef
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D35588
---
usr.sbin/bsdinstall/bsdinstall.8 | 9 +++++++++
usr.sbin/bsdinstall/scripts/rootpass | 12 +++++++++---
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/usr.sbin/bsdinstall/bsdinstall.8 b/usr.sbin/bsdinstall/bsdinstall.8
index c71097fde7f8..b76cdc04b9c3 100644
--- a/usr.sbin/bsdinstall/bsdinstall.8
+++ b/usr.sbin/bsdinstall/bsdinstall.8
@@ -343,6 +343,15 @@ target is executed.
If this directory does not already exist, it will be created.
Default:
.Dq Pa $TMPDIR/bsdinstall_boot
+.It Ev ROOTPASS_ENC
+Encrypted string to set the root password to in the format expected by
+.Xr pw 8
+.Fl H Ar 0 .
+This option is used if both it and
+.Ev ROOTPASS_PLAIN
+are set.
+.It Ev ROOTPASS_PLAIN
+Plain text string to set the root password to.
.It Ev ZFSBOOT_POOL_NAME
Name for the pool containing the base system.
Default:
diff --git a/usr.sbin/bsdinstall/scripts/rootpass b/usr.sbin/bsdinstall/scripts/rootpass
index 308c60e47a4c..f823c397c384 100755
--- a/usr.sbin/bsdinstall/scripts/rootpass
+++ b/usr.sbin/bsdinstall/scripts/rootpass
@@ -33,7 +33,13 @@ echo "$OSNAME Installer"
echo "========================"
echo
-echo "Please select a password for the system management account (root):"
-echo "Typed characters will not be visible."
+if [ -n "$ROOTPASS_ENC" ]; then
+ printf '%s\n' "$ROOTPASS_ENC" | pw -R $BSDINSTALL_CHROOT usermod root -H 0
+elif [ -n "$ROOTPASS_PLAIN" ]; then
+ printf '%s\n' "$ROOTPASS_PLAIN" | pw -R $BSDINSTALL_CHROOT usermod root -h 0
+else
+ echo "Please select a password for the system management account (root):"
+ echo "Typed characters will not be visible."
-chroot $BSDINSTALL_CHROOT passwd root 2>&1
+ chroot $BSDINSTALL_CHROOT passwd root 2>&1
+fi