문제가 발생했습니다 chroot
...
저는 Arch Linux x86_64에서 실행 중입니다.
64비트 chroot와 32비트 chroot가 있습니다. 하나는 32비트이고 다른 하나는 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를 가지고 있고 위의 내용이 재현 가능한지 확인할 수 있는 사람이 있습니까?
모든 명령은 루트로 실행됩니다. 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
, /etc/shadow
, /etc/nsswitch.conf
, 및 /etc/pam.d/*
finally.i