私はbusybox(1.31.1)をinitとして使用する組み込みLinuxシステムを開発しています。
/etc/inittabでログインを有効にしましたが、無効なパスワードを使用してシステムにログインできませんでした。
rootfs の /etc/shadow がホスト上に作成されましたが、mkpasswd -m "sha-256" "000000"
ターゲットの busybox ではコンソールからパスワード「000000」としてログインできません。
パスワードを000000にリセットするために、ターゲットpasswd user
(ログインは不要)でadbシェルを使用した後、それを使用してシリアルコンソールからログインできました。
また、adbシェルを介してターゲットから試行し、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
私はbuildrootのようにbusyboxの「des」を「sha256」に変更してみました。ただし、シリアルコンソールからシステムにログインできません。
だからどのように修正するのか分からない。
答え1
多くのテストとインターネット検索の最後にこの問題に対する解決策を見つけたようです。
ビジボックス構成で「内部シャドウパスワード機能を使用」を選択しないと、シリアルコンソールのパスワードを使用してビジボックスにログインできます。
問題は解決しましたが、誰かが良い詳細を持っている場合は、このオプションがログインプロセスにどのような影響を与えるかはまだわかりません。