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 +
Другие вопросы по тегам