Приложения Flatpak становятся все более популярными. Их особенность в том, что в приложение уже включены все необходимые библиотеки для установки, работы, и обновлений. Благодаря этому такие приложения работают практически на любой операционной системе семейства Linux.
Каждое Flatpak-приложение создается и запускается в изолированной среде, которая называется «песочницей». По умолчанию приложение может получить доступ только к содержимому своей «песочницы». Остальные доступы необходимо настраивать дополнительно. Если при использовании приложения Flatpak появляется сообщение об отсутствии доступа к какому-то ресурсу системы, значит необходимо настроить доступ для этого приложения.
Для настройки доступов удобно использовать приложение Flatseal, оно доступно для установки в Магазине приложений Uncom OS:
В графическом интерфейсе Flatseal отображается список приложений и доступные для них настройки:
Кратко разберём все доступные опции:
- Сеть - разрешить приложению доступ к сети;
- Межпроцессные коммуникации - разрешить межпроцессорные взаимодействия с хост-системой.
Эти две опции включены по умолчанию для всех приложений.
- Оконная система X11 - разрешить приложению открываться в оконном интерфейсе X11;
- Оконная система Wayland - разрешить приложению открываться в оконном интерфейсе Wayland;
- Возврат к оконной системе Х11 - разрешить приложению открываться в окне X11, в случае, если Wayland недоступен. Для корректной работы необходимо включить сокет "Оконная система X11";
- Звуковой сервер PulseAudio - разрешить приложению воспроизводить звуки или получать доступ к микрофону при использовании PulseAudio;
- Сессионная шина D-Bus - разрешить приложению доступ ко всей шине сеанса;
- Системная шина D-Bus - разрешить приложению доступ ко всей системной шине;
- SSH-агент - разрешить приложению использовать аутентификацию по SSH;
- Смарт-карты - разрешить приложению использовать смарт-карты;
- Система печати - разрешить приложению использовать системы печати;
- Каталоги GPG агента - разрешить приложению доступ к каталогам GPG-агента.
- GPU ускорение - разрешить приложению доступ к прямому рендерингу графики, чтобы воспользоваться преимуществами ускорения графического процессора (видеокарты);
- Устройства ввода - разрешить доступ к устройствам ввода;
- Виртуализация - разрешить приложению доступ к виртуализации;
- Распределяемая память - разрешить приложению доступ к общей памяти (память, к которой могут одновременно обращаться несколько программ для обеспечения коммуникации между ними или для избежания избыточных копий);
- Все устройства (пр. веб-камера) - разрешить приложению доступ ко всем устройствам, таким как веб-камера и внешние устройства.
- Системные вызовы разработки (пр.ptrace) - разрешить приложению доступ к определённым системным вызовам, таким как
ptrace()
и perf_event_open().
;
- Программы с других архитектур - разрешить приложению выполнять программы для ABI, отличного от того, который поддерживается системой изначально;
- Bluetooth - разрешить приложению использовать Bluetooth;
- Шина локальной сети контроллера - разрешите приложению использовать разъёмы
canbus
. Для этого также необходимо иметь доступ к сети;
- Общая память приложения - разрешить приложению совместно использовать его
/dev/shm
между экземплярами одного и того же идентификатора $FLATPAK_APP_ID.
Представлен специально для пакета Steam
(Flatpak), чтобы использовать его /dev/shm
для изолированных игр.
- Все системные файлы - разрешить доступ для чтения и записи ко всей файловой системе. Всё, что недоступно для записи пользователем, будет доступно только для чтения;
- Все системные библиотеки, исполняемые файлы и статические данные - разрешить доступ для чтения и записи к системным библиотекам, расположенным в
/usr
. Поскольку для записи в этот каталог требуется root-доступ, разрешение будет доступно только для чтения;
- Все конфигурации системы - разрешить доступ для чтения и записи к системным конфигурациям, расположенным в
/etc
. Поскольку для записи в этот каталог требуется root-доступ, разрешение будет доступно только для чтения;
- Все пользовательские файлы - разрешить доступ для чтения и записи к пользовательскому каталогу (
$HOME
или ~/
);
- Другие файлы - разрешите доступ для чтения и записи к нужному вам каталогу. Необходимо вручную прописать путь до каталога и в конце дописать атрибут, соответствующий правам доступа, :ro (read only, только чтение) или :rw (read-write, чтение и запись). Например:
/home/uncom/Загрузки:rw
.
Обратите внимание! При ручном указании пути к файлам нет необходимости подтверждать запись строки клавишей Enter или сохранять настройки. Просто добавьте новую строку и введите нужные данные.
Пример ручной настройки доступов приложения к файловым системам есть в статье про настройку Steam в Uncom OS.
- Файлы - разрешить приложению доступ к целевому каталогу, ограничивая доступ к нему другим приложениям. Начиная с каталога пользователя (
$HOME
или ~/
), целевой каталог будет переназначен в каталог приложения (~/.var/app/$FLATPAK_APP_ID/[PATH]
), если у него нет доступа на запись в целевой каталог. Например, указание в данной строке .mozilla
назначит ~/.mozilla
в ~/.var/app/org.mozilla.Firefox/.mozilla
. Эта настройка также используется для приведения в порядок каталога пользователя, поскольку она предотвращает запись приложения в ~/
.
- Переменные - установите переменную окружения в приложении, чтобы сделать эту переменную доступной для приложения при его запуске. Например, можно добавить
MOZ_ENABLE_WAYLAND=1
для Firefox, чтобы включить серверную часть Wayland.
- Переговоры - разрешить приложению взаимодействовать с системными службами. Например, добавление
org.freedesktop.Accounts
позволит приложению получать доступ к истории входа пользователей в систему;
- Владельцы - разрешить приложению владеть системными службами под заданным именем.
- Переговоры - разрешить приложению взаимодействовать со службами сеансов. Например, добавление org.freedesktop.Notifications позволит приложению отправлять уведомления;
- Владельцы - разрешить приложению владеть сеансовыми службами под заданным именем.
- Фон - разрешить приложению работать в фоновом режиме;
- Уведомления - разрешить приложению отправлять уведомления;
- Микрофон - разрешить приложению использовать микрофон;
- Динамики - разрешить приложению использовать динамики;
- Камера - разрешить приложению использовать камеру;
- Местоположение - разрешить приложению доступ к вашему местоположению.
Чтобы вернуть настройки в исходное состояние, нажмите вверху окна Flatseal пункт «Восстановить», и все настройки вернутся к состоянию, в котором были после установки соответствующего приложения Flatpak.
После выполнения настроек доступов в Flatseal перезагрузка системы не требуется, достаточно перезапустить приложение Flatpak, для которого в настройках доступа были внесены изменения.
При написании данной статьи использовались материалы из официальной документации проекта Flatseal
https://github.com/tchx84/Flatseal/blob/master/DOCUMENTATION.md
Материалы распространяются под лицензией Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)