Gtk Внимание: не могу открыть дисплей::0 (для локального пользователя!)
Я знаю, что есть множество похожих вопросов, но все они касаются сессий X-Forewarding и SSH.
Я получил эту проблему с локальным пользователем, который привилегирован для определенного сценария...
Эта проблема
В Ubuntu 16.04 я хочу, чтобы конкретный пользователь- гость мог запускать один конкретный скрипт /usr/sbin/test.sh с правами суперпользователя (этот скрипт, например, выполняет некоторые настройки системы и монтирует).
настройки
Я расширяю файл /etc/sudoers следующей строкой:
guest ALL = NOPASSWD: /usr/sbin/test.sh
guest
не в sudo
группа! (<- думаю, это проблема)
Сценарий
Для простоты:
#!/bin/bash
zenity --info --text="Testing Sudo X"
Работает нормально, если выполняется с sudo /usr/sbin/test.sh
от члена группы sudo или если нет отображаемых диалогов (означает: создание текста и операций в окне терминала работает без проблем).
Если guest
авторизуется (через greeter) и запускает новый gnome-терминал в единстве для выполнения sudo /usr/sbin/test.sh
это терпит неудачу с ошибкой (надеюсь, что немецкий в порядке):
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: Datei oder Verzeichnis nicht gefunden
Unable to init server: Verbindung ist gescheitert: Verbindungsaufbau abgelehnt
(zenity:19225): Gtk-WARNING **: cannot open display: :0
Я старался....
- экспорт
$DISPLAY
переменная до или вtest.sh
cp
.Xauthority
от других/home/user/
к моемуguest
- создать XAUT cookie с
xauth add
изxauth list
другого пользователя - добавлять
Defaults env_keep += "DISPLAY"
в/etc/sudoers
(сделал ошибку здесь!!!)
Вопрос / Заключение
Ничего из этого не сработало. Я полагаю, что отладка вещей на guest
как правило, не поможет, потому что команда работает с sudo. Поэтому мне нужно найти способ дать guest
разрешение на $DISPLAY
или же .Xauthority
Судо только для этой единственной команды.
1 ответ
Начиная с Ubuntu 16.04 года DISPLAY
больше не на :0
, Это число, которое может варьироваться в зависимости от того, сколько пользователей одновременно вошли в консоль.
Для решения проблемы необходимо настроить sudo
сохранить DISPLAY
переменная окружения.
Добавьте файл конфигурации в /etc/sudoers.d
каталог, содержащий следующее:
Defaults env_keep += "DISPLAY"
Это позволит sudo
пройти DISPLAY
переменная окружения для программы, которую он запускает, и эти программы смогут подключиться к DISPLAY
,
Вам необходимо установить xhost
для арки:
sudo pacman -S xorg-xhost
а затем запустите:
xhost +