Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

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


Информация
titleДанная статья применима к:
  • 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 по умолчанию дампы памяти процессов запрещены. Проверить это можно следующей командой::

Command
Titleulimit -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 в текущем каталоге ;

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

Command

sleep 20 &
killall -11 sleep

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

Блок кода
[1]+   Ошибка сегментирования
Для включения возможности снимать дампы, потребуется внести изменения в файле /etc/security/limits.conf строке 46:

...

title/etc/security/limits.conf

...

      sleep 20

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

Для того, чтобы разрешить сохранение дампов:
  1. Временно разрешить сохранение дампов (действует до перезагрузки):
    Command
    ulimit -S -c unlimited
  2. Для теста можно использовать приведенные ранее команды. Сообщение теперь будет выглядеть так:

    Блок кода
    [1]+   Ошибка 

...

  1. сегментирования    

...

  1.   (образ памяти сброшен на диск) 

...

  1. sleep 20

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

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

...

  1. :
    Блок кода
    title/etc/security/limits.conf
    *               soft    core            unlimited

...

  1. Например:

    Command
    echo '* soft core unlimited' | sudo tee -a /etc/security/limits.conf

    И перезагрузить машину.

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

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

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

      1. Место размещение дампов. Например, в файле astra-dump в домашнем каталоге пользователя:
        Command
        echo "/home/$USER/astra-dump" | sudo tee /proc/sys/kernel/core_pattern
      2. Разрешить дампы программ suid (действует до перезагрузки, в целях тестирования):
        Command

        sudo sysctl -w fs.suid_dumpable=1

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

      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:

    Command
    sudo apt install systemd-coredump 


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

    Command
    sudo kill -s SIGABRT `pgrep sshd`


    Command
    Titlesudo 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.

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

Command
sudo coredumpctl gdb

или с указанием имени отлаживаемой программы: 

Command
sudo coredumpctl gdb /usr/sbin/avahi-daemon

 При выполнении команды будет выбран последний по времени (последний подходящий по указанному имени) дамп и запущен отладчик.

Создать каталог для дампов:

Command

mkdir /cores

Разрешить полный доступ:

Command

chmod a+rwx /cores

Указать формат и место сохранения дампов:

...