Я не могу найти способ настроить свое событие abrt для копирования coredump в пользовательское местоположение. Причина, по которой я хочу сделать это, - это запретить abrt обрезать мои ядра, если каталог сбоев превышает MaxCrashReportsSize
. С предварительным условием, что я не контролирую, как настроен abrt, я хотел бы экспортировать coredump в каталог поддержки сразу же после его создания.abrt - использовать событие для копирования/перемещения coredump в пользовательское местоположение
EVENT=post-create pkg_name=raptorio analyzer=CCpp
test -f coredump && { mkdir -p /opt/raptorio/cores; cp -f coredump /opt/raptorio/cores/$(basename `cat executable`).core; }
Это событие сохранит один coredump для каждого двоичного файла C/C++ из моего пакета RPM raptorio. Когда моя программа разбивает ABRT печатает следующие ошибки в системном журнале:
Aug 30 08:28:41 abrtd: mkdir: cannot create directory `/opt/raptorio/cores': Permission denied
Aug 30 08:28:41 abrtd: cp: cannot create regular file `/opt/raptorio/cores/raptord.core': No such file or directory
Aug 30 08:28:41 abrtd: 'post-create' on '/var/spool/abrt/ccpp-2016-08-30-08:28:10-31213' exited with 1
Я вижу, что событие ABRT работает как root:root
но он заключен в тюрьму как-то, возможно, в связи с SELinux? Я использую abrt 2.0.8 на centos 6.
Оцените ссылку относительно места аварии. Программа запускается как root (намеренно), но событие все еще не создает каталог. Когда я регистрирую пользователя и группу в случае, я получаю «root: root». У кого есть доступ на запись к/opt. – Critikullx
@Critikullx - Потому что/opt, как ожидается, будет содержать программы и библиотеки, не было бы неожиданностью, что что-то в SELinux говорит, что нет-нет писать двоичный файл там, так как это будет первым шагом, чтобы обмануть кого-то в запуске недружественный исполняемый файл. Даже если вы можете победить это ограничение, это может привести к открытию дыры в безопасности. – CAB