Вопрос или проблема
Мое понимание модели безопасности Wayland заключается в том, что приложения по умолчанию не имеют доступа к окнам других приложений.
Тем не менее, существуют инструменты для создания скриншотов, такие как “grim”, которые могут, без дополнительной настройки с моей стороны, сделать скриншот всего рабочего стола.
Я искал в исходном коде Swaywm вхождения “grim”, чтобы увидеть, возможно ли наличие каких-то стандартных разрешений, но ничего не нашел.
Я неправильно понял модель безопасности?
Если нет, то почему/как grim может делать скриншоты, и что мне нужно сделать, чтобы отозвать необходимые разрешения или передать их другому приложению?
Wayland в общем не имеет “разрешений”.
Мое понимание модели безопасности Wayland заключается в том, что приложения по умолчанию не имеют доступа к окнам других приложений.
Это модель безопасности протокола, а не каждой реализации.
Более точно, я считаю, что модель безопасности заключается в том, что приложения не содержат доступ к окнам других приложений. Это не вопрос “стандартных разрешений”, так как в Wayland не существует встроенной системы разрешений; скорее, такие операции буквально не являются частью протокола (насколько я это понимаю).
Например, в X11 каждому окну назначается глобальный XID; базовый протокол имеет функции для перечисления всех окон; и просто зная этот XID, достаточно для работы с соответствующим окном (будь то “корневое окно”, принадлежащее самому X-серверу), включая получение его буфера в виде растрового изображения и многое другое. Вы могли видеть такие программы, как w3m или Ranger, которые рисуют изображения в терминале – они буквально рисуют на окне другого приложения, просто зная его XID (который терминал любезно предоставляет через $WINDOWID).
Wayland вообще не имеет этого механизма. Если я правильно понимаю, это скорее “система, основанная на возможностях”, где программы могут работать только с ресурсами, которые им явно предоставлены через ту или иную вызов протокола, в то время как другие ресурсы ‘не существуют’ с точки зрения программы. Так что это не то, что стандартные разрешения препятствуют им получать доступ к содержимому другого окна – больше того, что базовый протокол даже не определяет средства для этого.
Вместо этого композитор (менеджер окон) – который также выполняет роль дисплейного сервера в Wayland – отвечает за предоставление (и контроль) такого доступа неким неопределенным образом.
Каждый композитор может вообще не предоставлять такой доступ (ограничивая его своей встроенной горячей клавишей для скриншота), или предоставлять его через протокол, который использует какую-то “систему разрешений” (как это делает GNOME с своим фреймворком xdg-portal в стиле Android), или предоставлять его без каких-либо ограничений доступа (как делают многие композиторы на базе wlroots). Как вы заметили, SwayWM является одним из тех, кто не реализует никаких средств контроля доступа для своего протокола, по крайней мере на данный момент.
¹ Поскольку это не часть базового протокола, существует как минимум две конкурирующие системы – GNOME/KDE, которые используют D-Bus, и wlroots, который использует протоколы расширения на основе Wayland. (Обе системы, как правило, более продвинуты, чем то, что было доступно в X11; например, когда они действительно предоставляют запись экрана или экранное вещание, они могут делать это более эффективно, чем стиль X11 “захватить скриншот каждые X мс”.)
Ответ или решение
Вопрос о том, как работают разрешения на создание скриншотов в системе Wayland, поднимает важные аспекты безопасности и архитектуры этой системы отображения. Давайте подробнее рассмотрим, каким образом организованы эти процессы, и как это соотносится с вашей интерпретацией модели безопасности Wayland.
Модель безопасности Wayland
Ваше утверждение о том, что приложения в Wayland не имеют доступа к окнам других приложений по умолчанию, в целом верно. Однако, важно уточнить, что в Wayland не существует традиционной системы "разрешений", как это было в X11. В X11 приложения могут взаимодействовать с окнами других приложений благодаря методам работы с идентификаторами окон (XID). Такие функции, как перечисление всех окон и взаимодействие с ними, встроены в саму архитектуру X11.
В отличие от этого, Wayland реализует более строгую модель безопасности, которая исключает подобные механизмы доступа. В Wayland приложения могут работать только с теми ресурсами, которые им явно предоставлены через протокол вызовов. Таким образом, возможности приложений ограничены их контекстом, и они не могут взаимодействовать с окнами, которые они не создали.
Как работает grim
Основные аспекты функциональности
Скриншотеры, такие как "grim", работают через интерфейсы, предоставляемые композиторами (или оконными менеджерами), которые исполняют функции сервера отображения в Wayland. Например, grim может использовать соответствующие расширенные протоколы, чтобы запрашивать доступ к отображаемому контенту.
-
Композиторы: Каждый композитор может по-разному управлять доступом к содержимому экрана. Некоторые из них могут предоставлять доступ без ограничений (например, Sway), в то время как другие могут использовать систему разрешений, аналогичную D-Bus, как это делают GNOME и KDE.
-
Расширения протоколов: В Wayland разработаны различные расширения протоколов, которые позволяют приложениям выполнять действия, касающиеся захвата экрана. Например, протокол xdg-desktop-portal предоставляет интерфейс для безопасного взаимодействия между приложениями и ресурсами экрана.
Как управлять разрешениями
В SwayWM и других композиторах на базе wlroots в настоящее время нет встроенных механизмов для управления разрешениями на создание скриншотов, поскольку они могут предоставлять это без дополнительных настроек. Однако, если вам необходимо ограничить возможности приложений или контролировать доступ к содержимому экрана, рассмотрите следующие варианты:
-
Используйте композиторы с системами разрешений: Переход на композиторы, такие как GNOME или KDE, которые используют xdg-portal, позволит настроить управление доступом к ресурсам.
-
Исследуйте конфигурации: Вам стоит изучить конфигурацию вашего композитора, если он поддерживает какие-либо дополнительные параметры безопасности или плагины.
-
Обновите свои инструменты: Следите за обновлениями и улучшениями в различных проектных репозиториях, например, в Sway или grim, так как модель управления разрешениями постоянно развивается.
Заключение
В заключение, вы верно понимаете, что в Wayland отсутствуют традиционные разрешения, однако механизмы взаимодействия с окнами и контентом зависят от композитора, используемого в вашей системе. Grim может выполнять свои функции благодаря интерфейсам, предоставляемым композиторами, и отсутствие ограничения не является нарушением безопасности, а скорее особенностью этой экосистемы. Если вам необходимо ограничить доступ приложений, настоятельно рекомендуется рассмотреть возможность переключения на композитор с более строгими мерами управления доступом.