aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Davis <brd@FreeBSD.org>2022-08-05 15:10:21 +0000
committerBrad Davis <brd@FreeBSD.org>2022-08-05 15:10:21 +0000
commit3e1101f29b4ff39a67eb10a5b41b727d8702f0f5 (patch)
treea861212f44b63ee478c722737a09852de74ab74c
parenta69c0964625f4e20a7d5f22d51e036e13eedbeeb (diff)
downloadsrc-3e1101f29b4ff39a67eb10a5b41b727d8702f0f5.tar.gz
src-3e1101f29b4ff39a67eb10a5b41b727d8702f0f5.zip
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
-rw-r--r--usr.sbin/bsdinstall/bsdinstall.89
-rwxr-xr-xusr.sbin/bsdinstall/scripts/rootpass12
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