전용 CentOS 7 서버에서 루트 비밀번호를 재설정하려고 하는데 다음 오류가 계속 발생합니다.
chroot: failed to run command ‘/bin/bash’: No such file or directory
비밀번호를 잊어버리거나 기타 필요한 변경을 한 경우 비밀번호를 재설정할 수 있는 "복구 모드"를 통해 로그인합니다.
다음 명령을 사용하여 파티션을 마운트했습니다.
# mount /dev/md127 /mnt/
그러나 chroot를 시도하면 bash가 다음과 같이 존재하더라도 존재하지 않는다는 오류가 발생합니다.
root@rescue:~# chroot /mnt/
chroot: failed to run command ‘/bin/bash’: No such file or directory
root@rescue:~# ls /bin/bash
/bin/bash
root@Rescue:~#
답변1
Chroot가 찾을 수 없어서 불평하고 있습니다./bin/bash
~에chroot 환경을 사용하면 쉘에 들어가지 않습니다. 장치를 설치하고 내부를 확인하십시오.
# mount /dev/md127 /mnt/
# ls /mnt/bin/bash
내가 추측한 것이 맞다면 아무것도 표시되지 않을 것입니다. chroot에 유효한 쉘이 있으면 SHELL 환경 변수를 변경할 수 있습니다. 예를 들어, bash가 (/mnt)/usr/bin/bash에 있는 경우:
# SHELL=/usr/bin/bash chroot /mnt
(sh, csh, dash를 찾으세요...)
하지만 아마도 껍질이 필요하지 않을 수도 있습니다. chroot할 때 직접 실행할 명령을 지정할 수 있습니다.
# chroot /mnt passwd
man chroot
자세한 내용은 참조하십시오 .
또한 비밀번호를 변경하려면 비밀번호가 필요하지 않을 수도 있지만 디버깅 목적으로 루트를 변경할 때(예: 시스템이 부팅되지 않는 경우) 일반적으로 /dev, /dev/tty, /sys와 같은 일부 경로를 바인딩해야 합니다. 예를 들어 /proc mount -o bind /dev /mnt/dev
. 따라서 프로그램은 chroot 환경에서 장치, 프로세스 정보 등에 액세스할 수 있습니다.