問題が発生しました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:group
john: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:group
chrootに使用します。 64ビットchrootにアクセスする場合、上記の回避策は必要ありません。
答え1
ターゲットchroot環境で未知のユーザー名にchrootを入力することはできません。ユーザー認証に必要なすべてのファイルを各chrootにコピーします。/etc/passwd
、、、、およびfinally.i/etc/shadow
/etc/nsswitch.conf
/etc/pam.d/*