ошибка сегментации при использовании su или sudo

Пример проблемы:

$ su
Segmentation fault
$ sudo ls
Segmentation fault

Я пытался скомпилировать sqlite3 из исходного кода ранее. Я не знаю, какие библиотеки он установил. Это может быть причиной, почему это происходит.

Я попытался strace su, и это заканчивается следующим:

...
fstat64(6, {st_mode=S_IFREG|0644, st_size=17964, ...}) = 0
mmap2(NULL, 20788, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0xb7295000
mmap2(0xb7299000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x3) = 0xb7299000
close(6)                                = 0
mprotect(0xb7299000, 4096, PROT_READ)   = 0
mprotect(0xb72f9000, 4096, PROT_READ)   = 0
set_tid_address(0xb758a728)             = 11144
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)

Когда я пытаюсь gdb su и пытаюсь бежать, это дает мне Cannot find new threads: generic error. Я искал в Интернете решение проблемы, наткнулся на этот поток, а затем попытался запустить LD_PRELOAD=/lib/i386-linux-gnu/libpthread.so.0 gdb su (как предложено в потоке). Когда я попытался запустить его снова, он выдал ту же ошибку.

Основываясь на strace, я думаю, что есть некоторая проблема с тем, как это работает с потоками, но я не знаю, как это исправить. Есть ли способ переустановить базовые утилиты bash?

Вот больше информации о моей системе:

$ uname -a
myhost 3.2.0-37-generic-pae #58-Ubuntu SMP Thu Jan 24 15:51:02 UTC 2013 i686 i686 i386 GNU/Linux

(Я почти уверен, что аппаратное обеспечение 64-битное)

5
задан 23 May 2017 в 15:39

4 ответа

Существует шанс, что pam модуль от самбы вызывает это.

Если это так, затем это должно зафиксировать его:

  • Перезагрузите машину и примите решение загрузиться к режиму восстановления. Если Вы не видите режим восстановления, то сначала необходимо выбрать опцию 'Advanced options for'.
  • Выберите "drop into root shell" из меню восстановления
  • Выполните команду: dpkg - производят чистку libpam-smbpass
  • Выполните команду: dpkg - производят чистку libpam-winbind

Затем необходимо смочь использовать 'su' и 'sudo' снова.

Вы затем можете хотеть или должны сделать a

  • склонные sudo - получают установку-f

помочь зафиксировать любые остающиеся поврежденные пакеты.

Если Вы нуждаетесь в libpam-smbpass и/или libpam-winbind пакете, или имеете поврежденный пакет 'самбы', можно найти, что необходимо удалить или переименовать/var/lib/samba/secrets.tdb:

  • sudo mv/var/lib/samba/secrets.tdb/var/lib/samba/secrets.tdb.old

Получите/Свяжите: https://bugs.launchpad.net/ubuntu / + источник/самба / + ошибка/260687

0
ответ дан 23 May 2017 в 15:39

Используйте aptdcon, который связывается с apt-daemon через dbus, поэтому ему не нужно su или sudo, чтобы переустановить поврежденные пакеты. Вероятно, ваш лучший шанс - переустановить ВСЕ пакеты.

Во-первых, убедитесь, что нет неработающей установки в ожидании исправления:

aptdcon --fix-install

Также убедитесь, что на вашем диске есть свободное место:

df -h

Затем получите список установленных в настоящее время пакетов:

echo \"$(dpkg --get-selections | grep install | cut -f 1)\"

Сохраните это на потом, в текстовом редакторе чего-либо. Затем вызовите aptdcon следующим образом, используя полный список пакетов:

aptdcon --reinstall "package1 package2 package3..."

Я говорю вам об этом, потому что aptdcon не сможет переустановить некоторые пакеты по разным причинам, поэтому вы Придется вычеркнуть их, если aptdcon заплачет по этому поводу, и попытаться снова, возможно, более одного раза.

0
ответ дан 23 May 2017 в 15:39

Я видел эту проблему, но причина была немного другой. Я тестировал Kerberos и что-то неправильно настроено в моем /etc/krb5.conf. Через strace я обнаружил, что вскоре после прочтения этого файла в sudo произошел сбой, и решил, что проблема в моем файле конфигурации. Я не отслеживал определенную переменную, но одна вещь, которая выделялась, состояла в том, что переменная default_domain была пуста в krb5.conf, например, так

[libdefaults]
   default_realm = 

. строка нулевой длины и неправильно обрабатывать ее, вызывая SIGSEGV. Я не пытался отлаживать это дальше, так как это не было правильной настройкой. Я просто удалил мой /etc/krb5.conf.

0
ответ дан 23 May 2017 в 15:39

Если у вас возникла проблема с OP, вы не сможете сделать то, что предложил Хорхе Суарес де Лис, поскольку это вызовет ошибку зависимостей.

Итак,

aptdcon --reinstall "libsqlite3-0"

и

aptdcon --install "libsqlite3-0"

возвращает сообщение об ошибке:

ОШИБКА: org.debian.apt.TransactionFailed - ошибка в кэше ошибок : Следующие пакеты имеют неудовлетворенные зависимости:

При выполнении ЭТОГО:

aptdcon --fix-depends

это исправит, а su и sudo снова будут работать.

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: