我正在尝试重置我的专用 CentOS 7 服务器的 root 密码,但不断收到以下错误
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 环境,因此它不会将您置于那里的 shell 中。安装您的设备,然后检查内部:
# mount /dev/md127 /mnt/
# ls /mnt/bin/bash
如果我猜对的话,这不会显示任何东西。如果 chroot 中有有效的 shell,您可以更改 SHELL 环境变量。例如,如果 bash 位于 (/mnt)/usr/bin/bash:
# SHELL=/usr/bin/bash chroot /mnt
(寻找 sh、csh、dash...)
但你可能甚至不需要外壳。您可以指定 chroot 时直接运行的命令。
# chroot /mnt passwd
请参阅man chroot
了解更多详情。
另外,为了更改密码,您可能不需要它,但是当出于调试目的而进行 chroot 时(例如,如果您的系统无法启动),您通常必须绑定一些路径,例如 /dev、/dev/tty、/sys 和/proc.例如mount -o bind /dev /mnt/dev
。因此,程序可以在 chroot 环境中访问您的设备、处理信息等。