Администрирование FreeBSD, Linux, ... Snap: настройка разрешений и интерфейсов Fri, April 26 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Snap: настройка разрешений и интерфейсов Печать
Добавил(а) microsin   

Snap это система управления пакетами приложений Linux (application package management system), которая упрощает разработчикам публикацию программных пакетов (self contained software packages, snaps), которые будут работать на многих дистрибутивах и версиях Linux. Snaps содержат встроенную поддержку безопасности, и разработаны так, чтобы гарантировать все приложениям поддержку принципа наименьших привилегий / полномочий. Таким образом, каждый пакет имеет доступ только к общим группам ресурсов, которые ему требуются для выполнения своей предполагаемой функции.

Для такой поддержки функций безопасности каждый пакет помещается в "песочницу", где он работает в ограниченном в правах окружении, изолированном от остальной части системы. Это достигается через комбинацию AppArmor, seccomp, mount namespaces, cgroups и традиционную систему разрешений UNIX. Чтобы затем разрешить пакету доступ к общим ресурсам, система snap предоставляет "интерфейсы" к которым пакетам может быть предоставлен доступ, как это затребовал или определил пользователь. Сюда входят такие вещи, как файлы в домашней директории пользователя (home), или файлы на извлекаемых носителях (флешках), а также аппаратные устройства, такие как веб-камеры или аудиоустройства (полный список интерфейсов можно посмотреть в документации snap [2]). Также могут быть предоставлены интерфейсы от одного snap к другому, например чтобы один snap предоставил сервисы через DBus для другого snap-приложения, или для предоставления общего содержимого (shared content) от одного snap к другому.

Доступ к определенному интерфейсу соответствует определенному разрешению для пакета snap.

[Соединения интерфейса]

Интерфейс snap предоставляется через слот (slot), декларируемый определенным пакетом snap (само ядро snap предоставляет множество слотов), в то время как другие snap потребляют данных интерфейс, объявляя себя коннектором (plug) для этого интерфейса. Каждый snap декларирует необходимые интерфейсы (например перечисляя их как коннекторы plug), а затем подключаются к соответствующему слоту с помощью демона snapd либо автоматически, либо вручную, в зависимости от интерфейса. Некоторые интерфейсы подключаются автоматически ко всем snap-ам, которые декларируют к ним коннектор (plug), поскольку они представляют небольшой риск, или интерфейс обычно полезен для большинства snap-ов (таких как desktop и сетевые интерфейсы). Другие интерфейсы, такие как извлекаемые устройства removable-media или cups-control интерфейсы, должны либо подключаться пользователем вручную, либо подключаться автоматически через специально предоставленное исключение из Snap Store, или подключаться автоматически через пользовательский специфичный для устройства gadget snap. Рецензенты Snap Store обычно только предоставляют исключения, если считается, что полезность приложения значительно снижается, если запрашиваемые интерфейсы не подключаются автоматически.

Интерфейсы, используемые snap, можно просмотреть двумя способами - либо в GUI через приложение "Software" (gnome-software, или Центр приложений), либо через командную строку. Для каждого установленного snap кнопка Permissions в программе Software покажет интерфейсы, для которых snap объявляет plug-и, и позволяя пользователю вручную подключать или отключать каждый интерфейс.

snap notepad3 properties

snap notepad3 interface plug

То же самое можно посмотреть через командную строку используя команду snap interfaces (или более новый вариант snap connections):

$ snap interfaces notepad3
Slot                                  Plug
gnome-3-28-1804:gnome-3-28-1804       notepad3
gtk-common-themes:gtk-3-themes        notepad3
gtk-common-themes:icon-themes         notepad3
gtk-common-themes:sound-themes        notepad3
:desktop                              notepad3
:desktop-legacy                       notepad3
:gsettings                            notepad3
:home                                 notepad3
:network                              notepad3
:opengl                               notepad3
:wayland                              notepad3
:x11                                  notepad3
wine-platform-6-stable:wine-6-stable  notepad3
wine-platform-runtime:wine-runtime    notepad3
-                                     notepad3:cups-control
-                                     notepad3:hardware-observe
-                                     notepad3:process-control
-                                     notepad3:removable-media
'snap interfaces' is deprecated; use 'snap connections'.
$ snap connections notepad3 Interface Plug Slot Notes content[gnome-3-28-1804] notepad3:gnome-3-28-1804 gnome-3-28-1804:gnome-3-28-1804 - content[gtk-3-themes] notepad3:gtk-3-themes gtk-common-themes:gtk-3-themes - content[icon-themes] notepad3:icon-themes gtk-common-themes:icon-themes - content[sound-themes] notepad3:sound-themes gtk-common-themes:sound-themes - content[wine-6-stable] notepad3:wine-6-stable wine-platform-6-stable:wine-6-stable - content[wine-runtime] notepad3:wine-runtime wine-platform-runtime:wine-runtime - cups-control notepad3:cups-control - - desktop notepad3:desktop :desktop - desktop-legacy notepad3:desktop-legacy :desktop-legacy - gsettings notepad3:gsettings :gsettings - hardware-observe notepad3:hardware-observe - - home notepad3:home :home - network notepad3:network :network - opengl notepad3:opengl :opengl - process-control notepad3:process-control - - removable-media notepad3:removable-media - - wayland notepad3:wayland :wayland - x11 notepad3:x11 :x11 -

В показанном выше листинге видно, что интерфейсы cups-control, hardware-observe, process-control и removable-media не подключены к соответствующим коннекторам notepad3, и для них не перечислены слоты.

Пользователь может вручную подключать или отключать каждый из желаемых интерфейсов приложения. При подключении интерфейса пользователю выдается приглашение аутентификации как администратора. Пользователи без прав sudo не могут управлять разрешениями для каждого snap-приложения.

[Ссылки]

1. guide to snap permissions and interfaces site:ubuntu.com.
2. snap supported interfaces site:snapcraft.io.
3. The app store for Linux site:snapcraft.io.

 

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


Защитный код
Обновить

Top of Page