无法使用 mkpasswd -m sha-256 生成的密码登录 Linux shell

无法使用 mkpasswd -m sha-256 生成的密码登录 Linux shell

我正在开发一个嵌入式Linux系统,其中busybox(1.31.1)用作init。
我在 /etc/inittab 中启用了登录,但无法使用无效密码登录系统。
rootfs 中的 /etc/shadow 是在主机上生成的mkpasswd -m "sha-256" "000000",但在目标的 busybox 中,我无法在控制台中使用密码“000000”登录。

我尝试在目标中使用passwd useradb shell(不需要登录)将密码重新设置为 000000,然后我可以使用它从串行控制台登录。

我还尝试通过 adb shell 在目标中尝试echo "user:000000" | chpasswd -c SHA256,我也可以从串行控制台使用 000000 登录系统。

我检查了 busybox 配置,启用了以下选项。


#
# Login/Password Management Utilities
#
CONFIG_FEATURE_SHADOWPASSWDS=y
CONFIG_USE_BB_PWD_GRP=y
CONFIG_USE_BB_SHADOW=y
CONFIG_USE_BB_CRYPT=y
CONFIG_USE_BB_CRYPT_SHA=y
CONFIG_ADD_SHELL=y
CONFIG_REMOVE_SHELL=y
# CONFIG_ADDGROUP is not set
# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
# CONFIG_ADDUSER is not set
# CONFIG_FEATURE_CHECK_NAMES is not set
CONFIG_LAST_ID=0
CONFIG_FIRST_SYSTEM_ID=0
CONFIG_LAST_SYSTEM_ID=0
CONFIG_CHPASSWD=y
CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des"
CONFIG_CRYPTPW=y
CONFIG_MKPASSWD=y
# CONFIG_DELUSER is not set
# CONFIG_DELGROUP is not set
# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
CONFIG_GETTY=y
CONFIG_LOGIN=y
# CONFIG_LOGIN_SESSION_AS_CHILD is not set
CONFIG_LOGIN_SCRIPTS=y
CONFIG_FEATURE_NOLOGIN=y
CONFIG_FEATURE_SECURETTY=y
CONFIG_PASSWD=y
CONFIG_FEATURE_PASSWD_WEAK_CHECK=y

我尝试将 busybox 的“des”更改为“sha256”,与 buildroot 相同。但仍然无法从串行控制台登录系统。

所以我不知道要修复它。

答案1

经过大量的测试和谷歌搜索,我想我找到了解决这个问题的方法。

在busybox配置中,禁用“使用内部影子密码功能”的选择,然后我可以使用串行控制台的密码登录busybox。

虽然它已修复,但我仍然不知道此选项如何影响登录过程,如果有人有详细信息,那就太好了。

相关内容