|
|
(не показано 9 промежуточных версий этого же участника) |
Строка 1: |
Строка 1: |
| == Повышение привилегий в XWayland ==
| |
| Свободный перевод [https://wiki.archlinux.org/title/Running_GUI_applications_as_root]
| |
|
| |
|
| === Пример проблемы ===
| |
| При попытке запустить графическое приложение от имени root с помощью su, sudo или pkexec в сеансе Wayland (например, GParted или Gedit), происходит ошибка, подобная этой:
| |
| <><syntaxhighlight lang="text">
| |
| # gedit
| |
| No protocol specified
| |
| Unable to init server: Could not connect: Connection refused
| |
|
| |
| (gedit:2349): Gtk-WARNING **: cannot open display: :0
| |
| </syntaxhighlight>
| |
|
| |
| До Wayland запуск графических приложений с повышенными привилегиями можно было правильно реализовать, создав политику Polkit, или, что более опасно, запустив команду в терминале, добавив к ней sudo; но в (X)Wayland это больше не работает, поскольку по умолчанию разрешено подключать клиентов только пользователю, запустившему X-сервер (см. сообщение об ошибке и коммиты upstream, на которые оно ссылается).
| |
|
| |
| По возможности избегайте запуска графических приложений от имени root
| |
|
| |
| === Использование xhost ===
| |
|
| |
| Для этого выполните следующую команду от имени текущего (непривилегированного) пользователя:
| |
|
| |
| $ xhost si:localuser:root
| |
|
| |
| Чтобы удалить этот доступ после закрытия приложения:
| |
|
| |
| $ xhost -si:localuser:root
| |
|
| |
| === Использование pkexec ===
| |
| Вы можете запустить приложение с графическим интерфейсом с помощью:
| |
| $ pkexec env WAYLAND_DISPLAY=«$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY» XDG_RUNTIME_DIR=/run/user/0 program
| |
| что сохраняет переменную окружения WAYLAND_DISPLAY.
| |
|
| |
| === Использование sudo -E ===
| |
| Вы можете запустить приложение с помощью:
| |
| $ sudo -E program
| |
| Если вы хотите, чтобы переменная окружения HOME была установлена для целевого пользователя, используйте:
| |
| $ sudo -EH program
| |
| что сохраняет переменные окружения, такие как WAYLAND_DISPLAY. И установит переменную окружения HOME была установлена для целевого пользователя
| |