Вопрос или проблема
Когда я искал эту конкретную ошибку в интернете, все они касались оболочки сценариев. Я продолжал получать эту ошибку в самом терминале, и мой домашний сервер совершенно неработоспособен без загрузки в режим восстановления из-за этого. Экран входа в систему не работает и не реагирует на правильный или неправильный пароль. При загрузке отображается множество строк [ FAILED ].
Это началось, когда я настроил определенного пользователя с “чрот-тюремным пространством” и установил 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, она возвращает ее правильно! Например, “bash ldd <options
bash ldd /usr/bin/bash
<соответствующие правильные данные>
Это очень странно. Я установил оболочку для каждого пользователя на /bin/bash, но это ничего не изменило. Я относительно новичок в домашних серверах и обладал знаниями, чтобы создать несколько базовых сценариев и установить их в crontab или что-то подобное и иметь возможность подключаться по ssh снаружи сети. Но, к сожалению, я не был полностью осведомлен о настройке чрот-тюремного пространства и недооценил хаос, который это может veroorzaken. Я следовал этому учебному пособию и дошел до момента копирования библиотек для заключенного пользователя, когда я понял, что это сделало мой сервер нефункциональным при перезагрузке. Я снова извиняюсь за отсутствие логов, так как не ожидал этого и не скопировал то, что именно было сделано.
Спасибо.
Решено.
Это была просто испорченная символическая ссылка, касающаяся bin. Спасибо davidgo за то, что указали мне верный путь, это была не bash, а, скорее всего, проблема с bin. Другой пользователь также комментировал это, но его комментарий был удален, спасибо тому, кто это сделал.
Исправлено с помощью:
ln -s usr/bin bin
Ответ или решение
Проблема, с которой вы столкнулись, может быть вызвана неправильной настройкой символической ссылки для директории /bin
или же из-за отсутствия требуемых библиотек для интерпретатора оболочки bash
. Давайте рассмотрим основные шаги для выявления и устранения неисправностей.
1. Проверка символической ссылки
Как вы уже правильно заметили, ваше решение состояло в восстановлении символической ссылки для /bin
. Это очень распространённая проблема, особенно после изменения конфигурации системы, например, после установки chroot jail
. Убедитесь, что ваша символическая ссылка корректно настроена:
ln -s /usr/bin /bin
2. Проверка наличия необходимых файлов
Убедитесь, что Интрепретатор команд bash
установлен в правильном месте и доступен. Выполните команду для проверки:
ls -l /usr/bin/bash
Если вы видите, что файл отсутствует, возможно, вам нужно переустановить bash
. Для этого можно использовать пакетный менеджер (например, apt
для Debian/Ubuntu):
apt-get update
apt-get install --reinstall bash
3. Проверка библиотек
Поскольку вы упомянули, что использовали ldd
для проверки зависимостей, это очень полезно. Убедитесь, что все необходимые библиотеки для bash
доступны в системе. Если команда ldd /usr/bin/bash
тоже возвращает ошибку, вам может потребоваться проверить, что все библиотеки находятся на своих местах.
Посмотрите, какие библиотеки нужны:
ldd /usr/bin/bash
Если какая-либо из библиотек отсутствует, вам нужно будет установить её или создать необходимые символические ссылки.
4. Проверка окружения
Когда вы находитесь в режиме восстановления, некоторые окружения могут быть нестандартными. Проверьте, какое значение имеет переменная $SHELL
, как вы уже сделали:
echo $SHELL
Если она указывает на /bin/sh
, это может быть причиной того, что выбранный интерпретатор не запускается корректно. Убедитесь, что для всех пользователей настроен правильный шелл (например, /bin/bash
).
5. Восстановление системы
Если ваши попытки не увенчались успехом, и система по-прежнему неработоспособна, рассмотрите возможность восстановления важных файлов конфигурации, например, /etc/passwd
, /etc/shadow
, /etc/shells
. Просмотрите их на наличие некорректных записей, особенно для пользователей, с которыми вы работали.
Заключение
Восстановление системы с ошибками, связанными с конфигурацией оболочки или символьными ссылками, может быть трудоемким процессом, но с помощью вышеописанных шагов вы сможете выявить и устранить проблему. Если проблемы продолжаются, возможно, вам стоит обратиться к сообществу поддержки вашей операционной системы или на специализированные форумы для получения дополнительных рекомендаций.