Участник:HihinRuslan/waylnd and root: различия между версиями
Нет описания правки |
|||
Строка 4: | Строка 4: | ||
=== Пример проблемы === | === Пример проблемы === | ||
При попытке запустить графическое приложение от имени root с помощью su, sudo или pkexec в сеансе Wayland (например, GParted или Gedit), происходит ошибка, подобная этой: | При попытке запустить графическое приложение от имени root с помощью su, sudo или pkexec в сеансе Wayland (например, GParted или Gedit), происходит ошибка, подобная этой: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="bash"> | ||
# gedit | # gedit | ||
No protocol specified | No protocol specified | ||
Строка 20: | Строка 20: | ||
Для этого выполните следующую команду от имени текущего (непривилегированного) пользователя: | Для этого выполните следующую команду от имени текущего (непривилегированного) пользователя: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="bash"> | ||
$ xhost si:localuser:root | $ xhost si:localuser:root | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Чтобы удалить этот доступ после закрытия приложения: | Чтобы удалить этот доступ после закрытия приложения: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="bash"> | ||
$ xhost -si:localuser:root | $ xhost -si:localuser:root | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 30: | Строка 30: | ||
=== Использование pkexec === | === Использование pkexec === | ||
Вы можете запустить приложение с графическим интерфейсом с помощью: | Вы можете запустить приложение с графическим интерфейсом с помощью: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ pkexec env WAYLAND_DISPLAY=«$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY» XDG_RUNTIME_DIR=/run/user/0 program | $ pkexec env WAYLAND_DISPLAY=«$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY» XDG_RUNTIME_DIR=/run/user/0 program | ||
</syntaxhighlight> | </syntaxhighlight> | ||
что сохраняет переменную окружения WAYLAND_DISPLAY. | что сохраняет переменную окружения WAYLAND_DISPLAY. | ||
=== Использование sudo -E === | === Использование sudo -E === | ||
Вы можете запустить приложение с помощью: | Вы можете запустить приложение с помощью: | ||
<syntaxhighlight lang="bash"> | |||
$ sudo -EH program | $ sudo -EH program | ||
что сохраняет переменные окружения, такие как WAYLAND_DISPLAY | </syntaxhighlight> | ||
что сохраняет переменные окружения, такие как WAYLAND_DISPLAY и установит переменную окружения HOME была установлена для целевого пользователя |
Версия от 15:59, 24 октября 2024
Повышение привилегий в XWayland
Свободный перевод [1]
Пример проблемы
При попытке запустить графическое приложение от имени root с помощью su, sudo или pkexec в сеансе Wayland (например, GParted или Gedit), происходит ошибка, подобная этой:
# gedit
No protocol specified
Unable to init server: Could not connect: Connection refused
(gedit:2349): Gtk-WARNING **: cannot open display: :0
До 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 -EH program
что сохраняет переменные окружения, такие как WAYLAND_DISPLAY и установит переменную окружения HOME была установлена для целевого пользователя