From 712ce0b82e49bd55b55b3e5a5db6bc642390d7a1 Mon Sep 17 00:00:00 2001 From: Lukas Rusak <lorusak@gmail.com> Date: Mon, 11 Sep 2017 20:19:21 -0700 Subject: [PATCH] busybox: allow changing root password --- config/functions | 8 +++++--- packages/sysutils/busybox/config/busybox-target.conf | 12 ++++++------ packages/sysutils/busybox/package.mk | 1 - ...busybox-05-update-shadow-or-passwd-not-both.patch | 12 ++++++++++++ 4 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 packages/sysutils/busybox/patches/busybox-05-update-shadow-or-passwd-not-both.patch diff --git a/config/functions b/config/functions index 5f06046fc7..a7c846789e 100644 --- a/config/functions +++ b/config/functions @@ -369,13 +369,15 @@ add_user() { echo "$1:x:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd fi - touch ${INSTALL}/etc/shadow + touch ${INSTALL}/usr/config/shadow + ln -sf /storage/.config/shadow ${INSTALL}/etc/shadow + PASSWORD="$2" if [ "$PASSWORD" = "x" ]; then PASSWORD="*" fi - if [ -z "`grep "$1:" ${INSTALL}/etc/shadow`" ]; then - echo "$1:$PASSWORD:::::::" >> ${INSTALL}/etc/shadow + if [ -z "`grep "$1:" ${INSTALL}/usr/config/shadow`" ]; then + echo "$1:$PASSWORD:::::::" >> ${INSTALL}/usr/config/shadow fi } diff --git a/packages/sysutils/busybox/config/busybox-target.conf b/packages/sysutils/busybox/config/busybox-target.conf index 5d873c3831..165cd2bc10 100644 --- a/packages/sysutils/busybox/config/busybox-target.conf +++ b/packages/sysutils/busybox/config/busybox-target.conf @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Busybox version: 1.27.1 -# Wed Aug 2 13:41:55 2017 +# Mon Sep 11 19:54:52 2017 # CONFIG_HAVE_DOT_CONFIG=y @@ -484,8 +484,8 @@ CONFIG_INIT_TERMINAL_TYPE="" # Login/Password Management Utilities # CONFIG_FEATURE_SHADOWPASSWDS=y -CONFIG_USE_BB_PWD_GRP=y -CONFIG_USE_BB_SHADOW=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set CONFIG_USE_BB_CRYPT=y CONFIG_USE_BB_CRYPT_SHA=y # CONFIG_ADDGROUP is not set @@ -500,7 +500,7 @@ CONFIG_LAST_ID=0 CONFIG_FIRST_SYSTEM_ID=0 CONFIG_LAST_SYSTEM_ID=0 # CONFIG_CHPASSWD is not set -CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="sha512" CONFIG_CRYPTPW=y # CONFIG_MKPASSWD is not set # CONFIG_DELUSER is not set @@ -512,8 +512,8 @@ CONFIG_LOGIN=y CONFIG_LOGIN_SCRIPTS=y # CONFIG_FEATURE_NOLOGIN is not set # CONFIG_FEATURE_SECURETTY is not set -# CONFIG_PASSWD is not set -# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y CONFIG_SU=y CONFIG_FEATURE_SU_SYSLOG=y CONFIG_FEATURE_SU_CHECKS_SHELLS=y diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index 7ded7c9ae3..58576883b7 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -156,7 +156,6 @@ makeinstall_target() { cp $PKG_DIR/scripts/createlog $INSTALL/usr/bin/ cp $PKG_DIR/scripts/lsb_release $INSTALL/usr/bin/ cp $PKG_DIR/scripts/apt-get $INSTALL/usr/bin/ - cp $PKG_DIR/scripts/passwd $INSTALL/usr/bin/ cp $PKG_DIR/scripts/sudo $INSTALL/usr/bin/ cp $PKG_DIR/scripts/pastebinit $INSTALL/usr/bin/ ln -sf pastebinit $INSTALL/usr/bin/paste diff --git a/packages/sysutils/busybox/patches/busybox-05-update-shadow-or-passwd-not-both.patch b/packages/sysutils/busybox/patches/busybox-05-update-shadow-or-passwd-not-both.patch new file mode 100644 index 0000000000..b2698c9808 --- /dev/null +++ b/packages/sysutils/busybox/patches/busybox-05-update-shadow-or-passwd-not-both.patch @@ -0,0 +1,12 @@ +diff -Naur a/loginutils/passwd.c b/loginutils/passwd.c +--- a/loginutils/passwd.c 2017-07-06 08:14:57.000000000 -0700 ++++ b/loginutils/passwd.c 2017-09-11 17:06:07.572805135 -0700 +@@ -220,7 +220,7 @@ + if (rc > 0) + /* password in /etc/shadow was updated */ + newp = (char*) "x"; +- if (rc >= 0) ++ if (rc == 0) + /* 0 = /etc/shadow missing (not an error), >0 = passwd changed in /etc/shadow */ + #endif + {