终端返回错误“bash:/usr/bin/(command) /bin/bash:错误的解释器:没有这样的文件或目录”,除非命令前面有 bash

终端返回错误“bash:/usr/bin/(command) /bin/bash:错误的解释器:没有这样的文件或目录”,除非命令前面有 bash

当我在网上查找这个错误时,发现每个错误都与 shell 脚本有关。我不断在终端中收到此错误,因此,如果不启动救援模式,我的家庭服务器将完全无法使用。登录屏幕有漏洞,对正确或错误的密码均无响应。启动时还会显示许多 [ FAILED ] 行。

这是在我为特定用户配置了“chroot jail”并将其设置为 rbash 时开始的,不幸的是,我丢失了与我配置它相关的代码行,这些代码行在重新启动时导致了一场彻底的灾难。

当我在救援模式下发送命令时,例如“ldd /usr/bin/bash”,它会返回错误。但是,某些基本命令不会出现这种情况(也许它卡在 /bin/sh 上?“$SHELL”在救援模式下返回 /bin/sh)

ldd /usr/bin/bash
bash: /usr/bin/ldd: /bin/bash: bad interpreter: No such file or directory

但是。我发现如果我在命令前面加上 bash,它会正确返回!例如“狂欢ldd <选项”

bash ldd /usr/bin/bash
<relevant correct data>

这很奇怪。我已将每个用户的 shell 设置为 /bin/bash,但没有任何作用。我对家庭服务器还比较陌生,知道如何制作一些基本的脚本并将它们设置为 crontab 或诸如此类的东西,并能够从网络外部进行 ssh。但不幸的是,我对 chroot jail 设置并不完全了解,低估了它可能造成的破坏。我遵循了本教程我已经将库复制到被监禁的用户,这时我意识到这会导致我的服务器在重启时无法正常工作。我再次为没有日志而道歉,因为我没有预料到这种情况,也没有复制和粘贴到底做了什么。

谢谢。

答案1

解决了。

这只是一个与 bin 有关的损坏的符号链接。感谢 davidgo 为我指明了正确的方向,我猜不是 bash 而是 bin。另一个用户也对此发表了评论,但已被删除,也感谢那位评论者。

已修复:

ln -s usr/bin bin

相关内容