ABRT: отказано в доступе — как исправить ошибку в Linux

Ошибка вида abrt: can't open ... Permission denied или сообщение «abrt: отказано в доступе» обычно появляется, когда служба ABRT (Automatic Bug Reporting Tool) не может записать дамп сбоя в свой рабочий каталог — чаще всего /var/spool/abrt или /var/tmp/abrt в зависимости от версии дистрибутива. Служба работает от отдельного системного пользователя abrt, и любое нарушение прав на каталоги, политики SELinux или запуск инструментов от неподходящей учётной записи приводит к отказу в доступе.

Проблема характерна для систем семейства RHEL, CentOS, Fedora, AlmaLinux, Rocky Linux, где ABRT установлен по умолчанию. Ниже разберём, как диагностировать источник ошибки и устранить её без риска для системы. Конкретные пути и названия сервисов могут отличаться между версиями, поэтому перед изменениями стоит свериться с документацией вашего дистрибутива.

Что означает ошибка и когда она возникает

ABRT перехватывает аварийные завершения программ, собирает core-дампы и формирует отчёты. Сообщение об отказе в доступе появляется в нескольких типичных сценариях: при попытке демона abrtd создать каталог проблемы, при запуске утилиты abrt-cli от обычного пользователя без нужных полномочий, либо когда SELinux блокирует запись даже при корректных правах файловой системы.

Типичные признаки проблемы:

  • 🔴 В журнале (journalctl -u abrtd) повторяются строки с Permission denied при обращении к каталогу дампов;
  • 🟡 Команда abrt-cli list выдаёт ошибку доступа вместо списка проблем;
  • 🟠 Уведомления о сбоях не появляются, хотя приложения падают;
  • 🔵 Каталог /var/spool/abrt пуст или содержит неполные каталоги проблем.

Шаг 1. Проверка состояния службы и журналов

Первое действие — убедиться, что служба вообще запущена, и посмотреть, какое именно обращение блокируется. Выполните в терминале:

systemctl status abrtd

journalctl -u abrtd -n 50 --no-pager

В выводе журнала ищите строки с указанием пути, к которому нет доступа. Именно этот путь станет объектом дальнейшей проверки. Если служба остановлена, попробуйте запустить её командой sudo systemctl start abrtd и понаблюдайте за журналом повторно.

Также полезно проверить журнал аудита SELinux — отказы могут регистрироваться там, а не в журнале самой службы:

sudo ausearch -m avc -ts recent | grep abrt

Шаг 2. Проверка прав на каталог дампов

Наиболее частая причина — некорректные владелец или права на рабочий каталог ABRT. Такое случается после ручной очистки каталога, восстановления из резервной копии или переноса системы. Проверьте текущее состояние:

ls -ld /var/spool/abrt /var/tmp/abrt 2>/dev/null

В типичной конфигурации каталог должен принадлежать пользователю и группе abrt и иметь ограниченные права, поскольку дампы могут содержать чувствительные данные. Если владелец сбит, вернуть его можно так (путь уточните по выводу предыдущей команды и конфигурации вашей системы):

sudo chown -R abrt:abrt /var/spool/abrt

sudo chmod 0755 /var/spool/abrt

⚠️ Внимание: не выставляйте на каталог дампов права 777 «для проверки». Core-дампы могут содержать пароли, ключи и содержимое памяти приложений — широкий доступ создаёт реальную угрозу безопасности. Если ошибка исчезает только при чрезмерно широких правах, ищите причину в SELinux или владельце, а не ослабляйте права навсегда.

☑️ Диагностика прав доступа ABRT

Выполнено: 0 / 5

Шаг 3. SELinux как источник блокировки

На системах с включённым SELinux (режим enforcing) отказ в доступе может возникать даже при идеально выставленных правах файловой системы. Например, если каталог дампов был перенесён в нестандартное место, его контекст безопасности не совпадает с ожидаемым политикой.

Проверить текущий режим можно командой getenforce. Если обнаружены отказы (AVC) в аудите, связанные с abrt, возможные действия:

  • 🛡️ Восстановить контекст каталога командой sudo restorecon -Rv /var/spool/abrt;
  • 📋 Изучить конкретный отказ через audit2why, чтобы понять, какая политика сработала;
  • ⚙️ При нестандартном расположении каталога — зарегистрировать его контекст через semanage fcontext с последующим restorecon.

⚠️ Внимание: не переводите SELinux в режим disabled ради устранения одной ошибки. Это снимает защиту со всей системы. Если нужно временно проверить гипотезу, используйте sudo setenforce 0 (режим permissive до перезагрузки), а после подтверждения причины настройте корректный контекст и верните enforcing.

📊 Что стало причиной ошибки «abrt
отказано в доступе» в вашем случае?:Неверный владелец каталога дампов
Блокировка со стороны SELinux
Запуск abrt-cli от обычного пользователя
Причина так и не найдена

Шаг 4. Запуск abrt-cli с нужными привилегиями

Если ошибка возникает при работе с командной утилитой, проверьте, от какого пользователя она запущена. Просмотр и обработка отчётов требуют либо прав root, либо членства в соответствующей группе — в зависимости от конфигурации дистрибутива.

Попробуйте выполнить команду с повышением привилегий:

sudo abrt-cli list

Если с sudo список отображается, а без него — отказ в доступе, проблема не в службе, а в полномочиях вашей учётной записи. Варианты решения: работать через sudo либо добавить пользователя в группу, которой разрешён доступ к отчётам (название группы уточните в документации дистрибутива, оно различается между версиями).

Сравнение типичных причин и способов устранения

ПричинаКак распознатьРешение
Неверный владелец каталога дамповls -ld показывает root вместо abrtchown abrt:abrt на каталог
Блокировка SELinuxОтказы AVC в ausearch -m avcrestorecon или настройка контекста
Запуск abrt-cli без привилегийОшибка исчезает с sudosudo или членство в нужной группе
Служба abrtd остановленаsystemctl status показывает inactiveЗапуск и автозапуск службы
Повреждённый каталог проблемыОшибка на конкретном подкаталогеУдаление битого каталога проблемы

Если ничего не помогло

Когда права, SELinux и привилегии проверены, а ошибка сохраняется, остаются более глубокие варианты. Во-первых, проверьте, не переполнен ли раздел, на котором расположен каталог дампов: df -h /var — при заполнении файловой системы запись также становится невозможной. Во-вторых, убедитесь, что раздел не смонтирован в режиме только для чтения: это бывает после ошибок файловой системы, и признаки видны в выводе mount и dmesg.

Дополнительный вариант — переустановка пакетов ABRT с восстановлением структуры каталогов штатными средствами пакетного менеджера, например sudo dnf reinstall abrt в системах на базе RPM. Перед этим сохраните нужные отчёты о сбоях, если они представляют ценность.

Как ABRT обрабатывает сбой изнутри

При падении приложения ядро через механизм core_pattern передаёт дамп обработчику ABRT. Демон abrtd создаёт каталог проблемы в рабочем каталоге, сохраняет туда дамп и метаданные (командную строку, время, исполняемый файл), затем анализирует сбой и может сформировать backtrace. Отказ в доступе на любом из этих этапов прерывает цепочку — поэтому в журнале важно найти, на каком именно пути произошла ошибка.

Часто задаваемые вопросы

Можно ли просто удалить каталог /var/spool/abrt и создать заново?

Каталог можно пересоздать, но обязательно с правильным владельцем abrt:abrt и корректным контекстом SELinux (поможет restorecon). Учтите, что вместе с каталогом удалятся все сохранённые отчёты о сбоях.

Ошибка появляется только для одной программы — в чём дело?

Возможно, повреждён конкретный каталог проблемы внутри рабочего каталога ABRT. Найдите его по журналу и удалите именно этот подкаталог, не трогая остальные отчёты.

Безопасно ли отключить ABRT совсем?

Да, служба не критична для работы системы: sudo systemctl disable --now abrtd отключит сбор отчётов. Однако вы лишитесь удобной диагностики сбоев приложений, поэтому предпочтительнее всё же устранить проблему с доступом.

Почему после обновления системы ошибка вернулась?

Обновление пакетов или политик SELinux иногда меняет контексты безопасности или структуру каталогов. Повторите проверку владельца каталога и выполните restorecon — обычно этого достаточно.

Где посмотреть, какой путь использует ABRT в моей системе?

Загляните в конфигурационные файлы в /etc/abrt/ — там задаётся расположение рабочего каталога. Также путь фигурирует в сообщениях об ошибке в журнале службы.