chrootがi686の場合、--userspecはchrootに失敗します。

chrootがi686の場合、--userspecはchrootに失敗します。

問題が発生しましたchroot...

私はArch Linux x86_64で実行しています。

64ビットchrootと32ビットchrootがあります。 1つは32ビットで、もう1つは64ビットという点を除いて同じです。

を使用してそれらのいずれかを入力できますchroot /path/to/chroot。大丈夫です。

特定のユーザーとしてこれを行う場合は、コマンドは次のようになります。

chroot --userspec=user:group /path/to/chroot

これは64ビットchrootでも機能します。ただし、32ビットchrootでは失敗します。状態 125 とメッセージで失敗します。chroot: invalid user

さらに、chroot --userspec=uid:gid /path/to/chrootこれは32ビットと64ビットのchroot(uidおよびgid必要なユーザーとグループの数値ID)の両方でうまく機能します。

私が何か間違っているかどうかわかりません。 32ビットchrootを持っていて、上記の内容が再現可能であることを確認できる人はいますか?

すべてのコマンドはrootとして実行されます。 userspecパラメーターに使用されるユーザーとグループはchroot内で定義する必要があります。

それとも私が何かを逃した場合、私はどこで間違っているのか知りたいのですが。

更新:私はこの問題に対する解決策を使用しています。私が望むものが$userあると仮定すると(たとえば)、次のようにします。user:groupjohn:users

u=$(echo $user | awk -F ":" '{print $1}')
g=$(echo $user | awk -F ":" '{print $2}')
uid=$(grep $u /opt/chroot32/etc/passwd | awk -F ":" '{print $3}')
gid=$(grep $g /opt/chroot32/etc/group  | awk -F ":" '{print $3}')
echo "Using $uid:$gid in place of $user"
chroot --userspec="$uid:$gid" /opt/chroot32

これはうまくいきます - chrootのpasswdファイルとgroupファイルで必要なものを見つけて、user:groupchrootに使用します。 64ビットchrootにアクセスする場合、上記の回避策は必要ありません。

答え1

ターゲットchroot環境で未知のユーザー名にchrootを入力することはできません。ユーザー認証に必要なすべてのファイルを各chrootにコピーします。/etc/passwd、、、、およびfinally.i/etc/shadow/etc/nsswitch.conf/etc/pam.d/*

関連情報