Как настроить локально профиль apparmor?

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

Я хотел бы запустить Firefox с профилем apparmor aa-enforce(d). Это работает отлично, за исключением того, что у меня есть плагин, которому нужен доступ к связке ключей через dbus. Когда плагин (https://github.com/swick/moz-gnome-keyring-integration) пытается получить доступ к связке ключей, я получаю следующее сообщение в логах:

[ apparmor="DENIED" operation="dbus_method_call" bus="session" path="/org/freedesktop/secrets" interface="org.freedesktop.DBus.Properties" member="Get" mask="send" name="org.freedesktop.secrets" pid=20004 profile="/usr/lib/firefox/firefox{,*[^s][^h]}" peer_pid=2810 peer_profile="unconfined"]

Поэтому я пытаюсь предоставить доступ к dbus профилю Firefox, не изменяя базовый профиль, предоставленный пакетом apparmor-profies, поэтому я изменил файл в /etc/apparmor.d/local/usr.bin.firefox.

Вот что я пробовал:

# Специфические для сайта добавления и переопределения для usr.bin.firefox.
# Для более подробной информации смотрите /etc/apparmor.d/local/README.
# Разрешить интеграцию с gnome keyring
/usr/lib/firefox/firefox{,*[^s][^h]} {
  dbus (send,receive)
    bus=session
    interface=org.freedesktop.DBus.Properties
    path=/org/freedesktop/secrets,
}

но затем, при выполнении aa-enforce usr.bin.firefox, я получаю эту ошибку:

apparmor.common.AppArmorException: 'local/usr.bin.firefox profile in local/usr.bin.firefox contains syntax errors in line: 4.'

Это первый раз, когда я пытаюсь создать или изменить профиль apparmor, и я не знаю, что делать…
Какой должна быть синтаксис?

EDIT: используя apparmor_parser, я получил еще немного информации:

AppArmor parser error for /etc/apparmor.d/usr.bin.firefox in /etc/apparmor.d/local/usr.bin.firefox at line 4: syntax error, unexpected TOK_OPEN, expecting TOK_MODE

Итак, неожиданный TOK_OPEN, ожидание TOK_MODE… пока не имею представления, что это значит.

EDIT2: я попробовал тот же фрагмент непосредственно в профиле /etc/apparmor.d/usr.bin.firefox, и это работает. Значит, проблема в использовании локальной настройки…

Проблема заключается в открывающих скобках ({ и }). Оператор #include уже находится внутри главного описания профиля, поэтому скобки не нужны.

# Специфические для сайта добавления и переопределения для usr.bin.firefox.
# Для более подробной информации смотрите /etc/apparmor.d/local/README.
# Разрешить интеграцию с gnome keyring

dbus (send,receive)
  bus=session
  interface=org.freedesktop.DBus.Properties
  path=/org/freedesktop/secrets,

cd /etc/apparmor.d/
touch firefox-local

смените с sudo на root, используя “sudo -i”

cd /etc/apparmor.d/
touch firefox-local

используйте: nano firefox-local

вставьте файл ниже в firefox-local

измените USER в firefox-local на имя пользователя ноутбука

Этот профиль позволяет всё и существует только для того, чтобы дать

приложению имя вместо метки “unconfined”

abi <abi/4.0>,
include <tunables/global>
profile firefox-local
/home//bin/firefox/{firefox,firefox-bin,updater}
flags=(unconfined) {
userns,
# Специфические для сайта добавления и переопределения. Смотрите local/README для деталей.
include if exists <local/firefox>
}

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

Настройка профилей AppArmor для локальных приложений может быть сложной задачей, особенно для новых пользователей. В данной ситуации у вас возникли проблемы с предоставлением Firefox доступа к D-Bus для интеграции плагина с GNOME Keyring. Давайте рассмотрим шаги для корректной настройки профиля AppArmor, учитывая возникшие ошибки и особенности.

1. Понимание структуры профиля AppArmor:

AppArmor использует профили безопасности для ограничения доступа приложений. Каждый профиль описывает, какие системные ресурсы приложение может использовать. Папка /etc/apparmor.d/ содержит основные профили, в то время как локальные изменения должны быть помещены в соответствующие файлы в поддиректории local.

2. Диагностика ошибки:

Ошибка:

apparmor.common.AppArmorException: 'local/usr.bin.firefox profile in local/usr.bin.firefox contains syntax errors in line: 4.'

и дальнейшая информация о синтаксической ошибке связана с неправильным использованием фигурных скобок {}. Переменные должны быть указаны без них, если это локальные изменения внутри профиля.

3. Коррекция профиля:

Для локальной настройки вам нужно отредактировать файл /etc/apparmor.d/local/usr.bin.firefox, уточнив, какие изменения вы хотите внести. Так как вы пытаетесь предоставить доступ к D-Bus, исправьте конфигурацию следующим образом, удалив лишние фигурные скобки и уточняя необходимые права:

# Локальные дополнения и переопределения для usr.bin.firefox.
# Позволяет работе интеграции GNOME Keyring
dbus (send, receive) bus=session, interface=org.freedesktop.DBus.Properties, path=/org/freedesktop/secrets,

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

После внесения изменений необходимо перезагрузить профиль AppArmor. Это можно сделать командой:

sudo apparmor_parser -r /etc/apparmor.d/usr.bin.firefox

5. Валидация:

Убедитесь, что ваш Firefox работает корректно, а плагин имеет доступ к GNOME Keyring без проблем. Проверьте логи на наличие новых ошибок.

6. Общие рекомендации:

Обращайте внимание на документацию и комментарии к профилям, поскольку они содержат ценную информацию. Изучите официальную документацию AppArmor для лучшего понимания и более сложных конфигураций.

Следуя указаниям выше, вы можете настроить локальный профиль AppArmor для Firefox, учитывая ваш конкретный случай с интеграцией GNOME Keyring. Это позволит поддерживать высокий уровень безопасности, не влияя на функциональность вашего приложения.

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

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