Вопрос или проблема
Мне передали несколько дампов сбоев от Apport, работающего на Ubuntu 18.04 LTS. У меня нет доступа к соответствующему серверу, но я имею доступ к тестовой версии, которая, как мне сказали, должна быть настроена так же.
Проблема в том, что дампы сбоев содержат следующие строки:
ТипПроблемы: Сбой
Архитектура: amd64
Дата: Вс 1 декабря 2024 14:56:00
РелизДистрибутива: Ubuntu 18.04
ПутьКИсполняемомуФайлу: /usr/bin/uwsgi-core
ВремяИсполнения: 1629467367
КоманднаяСтрокаПроцесса: Некоторые\ uWSGI\ worker\ 1
ОкружениеПроцесса: Ошибка: [Errno 13] Доступ запрещен: 'environ'
КартыПроцесса: Ошибка: [Errno 13] Доступ запрещен: 'maps'
СтатусПроцесса:
...
Он содержит файл ядра, который я могу распаковать и загрузить в GDB, но проблема в том, что без ProcMaps я не уверен, что даже смогу узнать, какие библиотеки были загружены в какие области памяти.
Я видел множество примеров в интернете, где ProcEnviron и ProcMaps сталкиваются с той же проблемой, но ничего, что указывало бы на почему это не удается собрать.
Насколько я могу судить, конфигурация кажется довольно стандартной, сбор данных Apport включен. Я не вижу ничего, связанного с Apport, в системных журналах, указывающего на отказ AVC для /proc//environ или /proc//maps (я вижу их для других вещей, но не для apport)
Ответ или решение
Ошибки разрешений для ProcEnvironment и ProcMaps в Apport на Ubuntu 18.04 LTS
Введение
Ошибка, с которой вы столкнулись при анализе дампов краша в Apport на Ubuntu 18.04 LTS, связана с невозможностью доступа к ресурсам ProcEnviron
и ProcMaps
. Это, как правило, вызвано проблемами с правами доступа, которые можно решить с помощью надлежащей настройки конфигурации системы и Apport. В данной статье мы подробно рассмотрим возможные причины ошибки и шаги по их устранению.
Причины ошибок
-
Проблемы с правами доступа: Ошибки
[Errno 13] Permission denied
указывают на то, что Apport, работающий от имени пользователя, не имеет прав доступа к файлам окружения и картам процесса. Это может произойти из-за недостаточных привилегий пользователя, под которым запускается Apport, или из-за ограничений, наложенных на процесс, в котором произошел сбой. -
Контроль доступа на уровне ядра: На системах, использующих SELinux или AppArmor, могут быть активированы политики безопасности, которые блокируют доступ к данным в
/proc/[pid]/environ
и/proc/[pid]/maps
. Так как вы не видите записей AVC в журналах, стоит проверить, как настроены профили AppArmor или SELinux, если они включены.
Рекомендации по устранению ошибок
-
Проверка прав доступа:
- Убедитесь, что Apport запущен от пользователя с достаточными правами. В некоторых случаях, если процесс, который вызывает сбой, запускается с ограничениями (например, через
systemd
), возможно, Apport не может получить к нему доступ. Проверьте, под каким пользователем запускается службаuwsgi
.
- Убедитесь, что Apport запущен от пользователя с достаточными правами. В некоторых случаях, если процесс, который вызывает сбой, запускается с ограничениями (например, через
-
Настройка безопасности:
- Если используется AppArmor, проверьте, есть ли активированные профили для
uwsgi-core
. Вы можете временно переключить профиль профиля в режим "воспроизведения" с помощью команды:sudo aa-complain /etc/apparmor.d/usr.sbin.uwsgi
- После этого попробуйте повторно запустить Apport и собрать дамп. Если ошибка исчезнет, это указывает на то, что проблема связана с ограничениями AppArmor.
- Если используется AppArmor, проверьте, есть ли активированные профили для
-
Логи системы:
- Проверьте журналы системы на наличие записей, связанных с доступом к процессам. Можно использовать команды:
journalctl -xe dmesg | grep -i denied
- Эти журналы могут предоставить дополнительную информацию о том, что пошло не так при попытке доступа к
/proc/[pid]/environ
и/proc/[pid]/maps
.
- Проверьте журналы системы на наличие записей, связанных с доступом к процессам. Можно использовать команды:
-
Обновление системы:
- Убедитесь, что ваша система обновлена до последней версии. Часто обновления содержат исправления ошибок, которые могут улучшить работу Apport и разрешить проблемы с доступом к системным ресурсам:
sudo apt update && sudo apt upgrade
- Убедитесь, что ваша система обновлена до последней версии. Часто обновления содержат исправления ошибок, которые могут улучшить работу Apport и разрешить проблемы с доступом к системным ресурсам:
Заключение
Ошибки доступа при попытке собрать информацию о процессе в Apport могут быть серьезным препятствием для анализа и диагностики сбоев. Применение вышеописанных методов поможет вам устранить проблемы с правами доступа и успешно собрать необходимые данные для анализа. Надеюсь, эта информация будет полезной и поможет вам в дальнейшей отладке вашего сервера.