Вопрос или проблема
В удаленной системе, к которой у меня нет доступа к консоли и с которой я подключаюсь через ssh
, я поломал установку sudo
и теперь не могу его использовать, и не могу перезагрузиться как root
. Команда, которую я выполнил, была:
sudo mv /lib/x86_64-linux-gnu/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6_org
Каждый раз, когда я выполняю sudo <команда или опция>
, он говорит ошибка сегментации
, например:
~$ sudo -s
Ошибка сегментации (дамп ядра)
В качестве конкретных случаев,
id
работает:uid=1479554(s1474782) gid=100(users) groups=100(users),27(sudo),999(docker)
sh
также работаетsudo id
не работает:sudo id Ошибка сегментации (дамп ядра)
su s1474782 -c id
не работает:sudo id Ошибка сегментации (дамп ядра)
Я обновлял некоторые библиотеки и думаю, что поломал библиотеку libm.so.6
, однако я не вижу, чтобы sudo
зависел от нее:
ldd $(which sudo)
linux-vdso.so.1 => (0x00007ffd7ef9e000)
libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f139de21000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f139dbff000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f139d9fc000)
libsudo_util.so.0 => /usr/lib/sudo/libsudo_util.so.0 (0x00007f139d7e8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f139d41e000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f139d1ae000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f139cfaa000)
/lib64/ld-linux-x86-64.so.2 (0x00007f139e26b000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f139cd8d000)
Есть ли какие-нибудь советы, как это решить? Могу я просто переустановить sudo
?
Чтобы это исправить, попробуйте войти как пользователь root
, если это возможно, или загрузите систему в режиме восстановления, чтобы получить доступ к root
.
Оттуда переименуйте libm.so.6_org
обратно в libm.so.6
. Это должно позволить sudo
снова работать, так как библиотека будет восстановлена в исходное состояние.
Ответ или решение
Как решить проблему с "segmentation fault" при использовании sudo
Введение
При работе с системами на базе Linux может возникнуть множество непредвиденных неполадок. Одной из таких проблем является ошибка "segmentation fault" при запуске команды sudo
. Данная ошибка может произойти из-за повреждения библиотек или неправильного их обновления. В данной статье вы найдете решение конкретной проблемы, связанной с перемещением библиотеки libm.so.6
и последующим нарушением работы команды sudo
.
Анализ проблемы
Ваша проблема заключается в том, что команда sudo
вызывает ошибку сегментации при выполнении любых команд. Вы уже провели диагностику, проверив зависимости с помощью команды ldd
. Библиотека libm.so.6
не указана в зависимостях для sudo
, но учитывая, что она является важной частью стандартной библиотеки C, её отсутствие может отрицательно влиять на выполнение многих команд, особенно тех, которые зависят от математических функций.
Команды, которые не требуют привилегий, выполняются без ошибок. Однако, как только вы пытаетесь использовать sudo
, система выдает ошибку сегментации.
Решение проблемы
-
Вход под рутом:
- Если у вас есть возможность доступа к root (например, через
SSH
), попробуйте войти в систему как root. Это наиболее простое решение, которое позволит вам восстановить поврежденные файлы. -
Для входа под рутом можно попробовать использовать:
ssh root@<адрес_системы>
- Если у вас есть возможность доступа к root (например, через
-
Использование режима восстановления:
- Если вы не можете войти в систему как root через SSH, попробуйте перезагрузить систему в режиме восстановления (recovery mode). Это позволит вам получить доступ к командной строке с правами root без необходимости использовать
sudo
. Выберите соответствующий пункт в загрузочном меню (обычно Grub) и следуйте инструкциям для загрузки в режим восстановления.
- Если вы не можете войти в систему как root через SSH, попробуйте перезагрузить систему в режиме восстановления (recovery mode). Это позволит вам получить доступ к командной строке с правами root без необходимости использовать
-
Восстановление библиотеки:
-
После того как вы получите доступ к командной строке с правами root, выполните команду для восстановления библиотеки:
mv /lib/x86_64-linux-gnu/libm.so.6_org /lib/x86_64-linux-gnu/libm.so.6
-
Это должно вернуть библиотеку в её исходное состояние, тем самым исправив ошибки, связанные с
sudo
.
-
-
Переустановка sudo:
-
Если предыдущий шаг не дал результатов, возможно, поможет переустановка пакета
sudo
. Это можно сделать следующим образом:apt-get update apt-get install --reinstall sudo
-
Заключение
Ошибка "segmentation fault" при использовании команды sudo
может возникать по многим причинам, и ваша ситуация является ярким примером этого. Восстановление поврежденных библиотек или переустановка пакета sudo
часто может решить проблему. Если ни один из методов не помог, вы можете рассмотреть возможность полной переустановки системы.
Если у вас остаются вопросы, не стесняйтесь обращаться за дополнительной помощью или советом. Важно: не забывайте регулярные бэкапы важных данных перед проведением серьезных действий с библиотеками и системными компонентами.