Для выполнения всех инструкций, приведенных в статье, необходимы пакеты из расширенного репозитория для Astra Linux Special Edition  x.8 или репозитория со средствами разработки.

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5)
  • Astra Linux Common Edition 2.12

Включение сохранения дампов приложений

В Astra Linux по умолчанию дампы памяти процессов запрещены. Проверить это можно следующей командой::

ulimit -S -c ; sudo sysctl fs.suid_dumpable ; cat /proc/sys/kernel/core_pattern

0
fs.suid_dumpable = 0
core
В выводе команды:

  • 0 — максимальный размер файла дампа. Значение ноль указывает на то, что сохранение дампов запрещено;

  • fs.suid_dumpable = 0  — отдельно запрещено сохранение дампов программ, файлы которых имеют бит suid;

  • core — дампы должны сохранятьcя в файле с именем core в текущем каталоге ;

Для проверки сохранения дампов можно использовать выполнить команды:

sleep 20 &
killall -11 sleep
В результате выполнения указанных команд будет выдано сообщение вида:

[1]+   Ошибка сегментирования      sleep 20

однако дамп (файл core) при этом создан не будет.

Для того, чтобы разрешить сохранение дампов:
  1. Временно разрешить сохранение дампов (действует до перезагрузки):

    ulimit -S -c unlimited

  2. Для теста можно использовать приведенные ранее команды. Сообщение теперь будет выглядеть так:

    [1]+   Ошибка сегментирования      (образ памяти сброшен на диск) sleep 20

    При этом в текущем каталоге будет создан файл core с дампом.

  3. Для того, чтобы разрешить дампы постоянно (вступает в действие после перезагрузки) добавить в файл /etc/security/limits.conf строку:
    /etc/security/limits.conf
    *               soft    core            unlimited

    Например:

    echo '* soft core unlimited' | sudo tee -a /etc/security/limits.conf
    И перезагрузить машину.

  4.  Проверку после перезагрузки можно выполнить указанным выше способом. 

  5. При необходимости можно изменить иные параметры сохранения дампов:

    1. Временно, до перезагрузки:

      1. Место размещение дампов. Например, в файле astra-dump в домашнем каталоге пользователя:

        echo "/home/$USER/astra-dump" | sudo tee /proc/sys/kernel/core_pattern

      2. Разрешить дампы программ suid (действует до перезагрузки, в целях тестирования):

        sudo sysctl -w fs.suid_dumpable=1

        Значения параметра suid_dumpable: https://sysctl-explorer.net/fs/suid_dumpable/.
    2. Постоянно пазрешить дампы программ suid после перезагрузки:

      echo "fs.suid_dumpable=1" | sudo tee /etc/sysctl.d/fs_suid_dumpable.conf
      sudo sysctl -p --system

Дампы служб systemctl

Применимо для Astra Linux Special Edition очередное обновление 1.7 с подключенным базовым репозиторием и для Astra Linux Special Edition очередное обновление 1.8 с подключенным расширенным репозиторием.
  1. Установить пакет systemd-coredump:

    sudo apt install systemd-coredump 

  2. Тест, например:

    sudo kill -s SIGABRT `pgrep sshd`
    sudo coredumpctl

    TIME                            PID   UID   GID SIG COREFILE  EXE
    Thu 2022-12-08 21:52:10 MSK     639     0     0   6 present   /usr/sbin/sshd
    Thu 2022-12-08 21:57:44 MSK    3738     0     0   6 present   /usr/sbin/sshd

Дампы по умолчанию сохраняются в каталоге  /var/lib/systemd/coredump.

При наличии в системе установленного отладчика для отладки можно использовать команды вида:

sudo coredumpctl gdb
или с указанием имени отлаживаемой программы: 
sudo coredumpctl gdb /usr/sbin/avahi-daemon
 При выполнении команды будет выбран последний по времени (последний подходящий по указанному имени) дамп и запущен отладчик.