Как я могу исправить политику AppArmor, которая не позволяет этому отправителю отправить это сообщение этому получателю на моем сервере Ubuntu ARM?

Вопрос или проблема

У меня здесь большая проблема, прошло 16 дней с тех пор, как я задал ее на Stackoverflow, и я не получил ответа. Вот ссылка на вопрос https://stackoverflow.com/questions/79176447/how-can-i-fix-an-apparmor-policy-prevents-this-sender-from-sending-this-message. Я провел много исследований, и не могу это решить. Вот почему я прошу вас помочь мне… Как вы можете видеть, когда я запускаю chromium --headless --disable-gpu --no-sandbox --no-pdf-header-footer --print-to-pdf="/home/johndoe/407163caf78c6deedcb8bf732e7e1326-en.pdf" 'https://files.domain.com/docs/407163caf78c6deedcb8bf732e7e1326.html' && mv '/home/johndoe/407163caf78c6deedcb8bf732e7e1326-en. pdf' '/var/www/files.domain.com/docs/' && echo 'files.transladocs.com/docs/407163caf78c6deedcb8bf732e7e1326-en.pdf' напрямую в SSH моего ARM-сервера, он отображает свои ошибки, а затем конвертирует в PDF, но когда я пытаюсь сделать это напрямую на своем сайте, это вообще не работает. Пожалуйста, ознакомьтесь с вопросом, чтобы увидеть все детали.

Вот ошибки, которые он мне выдал:

[17035:17192:1111/053835.545588:ERROR:object_proxy.cc(576)] Не удалось вызвать метод: org.freedesktop.DBus.ListActivatableNames: object_path= /org/freedesktop/DBus: org.freedesktop.DBus.Error.AccessDenied: Политика AppArmor запрещает этому отправителю отправлять это сообщение этому получателю; type="method_call", sender=":1.71" (uid=1000 pid=17035 comm="/snap/chromium/2992/usr/lib/chromium-browser/chrom" label="snap.chromium.chromium (enforce)") interface="org.freedesktop.DBus" member="ListActivatableNames" error name="(unset)" requested_reply="0" destination="org.freedesktop.DBus" (bus) [17035:17192:1111/053835.604277:ERROR:object_proxy.cc(576)] Не удалось вызвать метод: org.freedesktop.DBus.ListActivatableNames: object_path= /org/freedesktop/DBus: org.freedesktop.DBus.Error.AccessDenied: Политика AppArmor запрещает этому отправителю отправлять это сообщение этому получателю; type="method_call", sender=":1.73" (uid=1000 pid=17035 comm="/snap/chromium/2992/usr/lib/chromium-browser/chrom" label="snap.chromium.chromium (enforce)") interface="org.freedesktop.DBus" member="ListActivatableNames" error name="(unset)" requested_reply="0" destination="org.freedesktop.DBus" (bus) 754773 байт записано в файл /home/john/407163caf78c6deedcb8bf732e7e1326-fr.pdf files.domain.com/docs/407163caf78c6deedcb8bf732e7e1326-fr.pdf

Итак, что мне нужно сделать, чтобы это окончательно исправить? Это очень мне поможет… Я совершенно заблокирован здесь…

Ответ или решение

Чтобы исправить проблему с политикой AppArmor, которая препятствует отправке сообщений от одного отправителя к другому на вашем сервере Ubuntu ARM, необходимо выполнить несколько шагов. Важно отметить, что ошибка происходит из-за ограничений AppArmor на доступ к D-Bus, где приложение Chromium пытается вызов метода ListActivatableNames. Предлагаю следовать нижеизложенной инструкции.

1. Понимание проблемы

Ошибка, с которой вы сталкиваетесь, говорит о том, что текущая политика AppArmor для Chromium ограничивает выполнение определенных D-Bus вызовов. В частности, это касается взаимодействия с системными службами, которые могут быть необходимы для корректной работы в headless-режиме.

2. Проверка статуса AppArmor

Во-первых, убедитесь, что AppArmor включен и работает на вашем сервере. Вы можете проверить статус с помощью команды:

sudo systemctl status apparmor

3. Определение политики AppArmor для Chromium

Поскольку вы используете версию Chromium, установленную через Snap, нужно узнать текущие политики, применяемые к этой версии. Это можно сделать с помощью команды:

sudo aa-status

В выводе вы можете увидеть, какие профили активны и какие из них находятся в состоянии "enforce".

4. Создание или изменение профиля

Если профиль для Chromium уже существует, вам потребуется его отредактировать. Если нет, его нужно создать. Используйте следующую команду для редактирования:

sudo nano /etc/apparmor.d/disable/snap.chromium.chromium

5. Обновление политик

Вам нужно добавить определенные разрешения, чтобы разрешить Chromium вызывать D-Bus. Добавьте следующие строки в профиль:

# Разрешить доступ к D-Bus
dbus (send, receive) peer=(label=snap.chromium.chromium)

Это разрешает вашему приложению отправлять и получать сообщения через D-Bus, что должно устранить ошибку доступа.

6. Перезагрузка профиля

Как только вы внесли изменения в профиль, необходимо перезагрузить AppArmor и профиль Chromium:

sudo apparmor_parser -r /etc/apparmor.d/snap.chromium.chromium
sudo systemctl restart apparmor

7. Тестирование изменений

Теперь запустите вашу команду Chromium снова, чтобы проверить, устранена ли ошибка:

chromium --headless --disable-gpu --no-sandbox --no-pdf-header-footer --print-to-pdf="/home/johndoe/407163caf78c6deedcb8bf732e7e1326-en.pdf" 'https://files.domain.com/docs/407163caf78c6deedcb8bf732e7e1326.html' && mv '/home/johndoe/407163caf78c6deedcb8bf732e7e1326-en.pdf' '/var/www/files.domain.com/docs/' && echo 'files.domain.com/docs/407163caf78c6deedcb8bf732e7e1326-en.pdf'

Примечания

  • Тестирование в безопасном режиме: Рекомендуется сначала протестировать профили в режиме "complain", чтобы видеть все события, которые были бы отклонены, прежде чем активировать строгий режим "enforce":

    sudo aa-complain /etc/apparmor.d/snap.chromium.chromium
  • Логи: Используйте команды dmesg или journalctl -xe для проверки логов и устранения возможных проблем.

Следуя вышеописанным шагам, вы сможете устранить проблему с политикой AppArmor и обеспечить корректную работу Chromium на вашем сервере.

Оцените материал
Добавить комментарий

Капча загружается...