судо авари сегментации

Вопрос или проблема

В удаленной системе, к которой у меня нет доступа к консоли и с которой я подключаюсь через 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, система выдает ошибку сегментации.

Решение проблемы

  1. Вход под рутом:

    • Если у вас есть возможность доступа к root (например, через SSH), попробуйте войти в систему как root. Это наиболее простое решение, которое позволит вам восстановить поврежденные файлы.
    • Для входа под рутом можно попробовать использовать:

      ssh root@<адрес_системы>
  2. Использование режима восстановления:

    • Если вы не можете войти в систему как root через SSH, попробуйте перезагрузить систему в режиме восстановления (recovery mode). Это позволит вам получить доступ к командной строке с правами root без необходимости использовать sudo. Выберите соответствующий пункт в загрузочном меню (обычно Grub) и следуйте инструкциям для загрузки в режим восстановления.
  3. Восстановление библиотеки:

    • После того как вы получите доступ к командной строке с правами root, выполните команду для восстановления библиотеки:

      mv /lib/x86_64-linux-gnu/libm.so.6_org /lib/x86_64-linux-gnu/libm.so.6
    • Это должно вернуть библиотеку в её исходное состояние, тем самым исправив ошибки, связанные с sudo.

  4. Переустановка sudo:

    • Если предыдущий шаг не дал результатов, возможно, поможет переустановка пакета sudo. Это можно сделать следующим образом:

      apt-get update
      apt-get install --reinstall sudo

Заключение

Ошибка "segmentation fault" при использовании команды sudo может возникать по многим причинам, и ваша ситуация является ярким примером этого. Восстановление поврежденных библиотек или переустановка пакета sudo часто может решить проблему. Если ни один из методов не помог, вы можете рассмотреть возможность полной переустановки системы.

Если у вас остаются вопросы, не стесняйтесь обращаться за дополнительной помощью или советом. Важно: не забывайте регулярные бэкапы важных данных перед проведением серьезных действий с библиотеками и системными компонентами.

Оцените материал
Добавить комментарий

Капча загружается...