Назад | Перейти на главную страницу

Gtk Предупреждение: не удается открыть дисплей:: 0 (для локального пользователя!)

Я знаю, что есть множество подобных вопросов, но все они касаются сеансов X-Forewarding и SSH.

У меня проблема с локальным пользователем, который имеет привилегии для определенного скрипта ...

Эта проблема

В ubuntu 16.04 мне нужен конкретный пользователь гость чтобы иметь возможность запускать один конкретный скрипт /usr/sbin/test.sh с правами root (например, скрипт выполняет некоторые системные настройки и монтирует).

Настройки

Я продлеваю / и т.д. / sudoers файл со следующей строкой:

guest   ALL = NOPASSWD: /usr/sbin/test.sh

guest не является в sudo группа! (<- думаю, в этом проблема)

Сценарий

Для простоты:

#!/bin/bash

zenity --info --text="Testing Sudo X"

Работает нормально, если выполняется с sudo /usr/sbin/test.sh от члена sudo-group или если нет диалогов для отображения (означает: создание текста и операций в окне терминала работает без проблем).

Если guest входит в систему (через greeter) и запускает новый gnome-terminal в единстве для выполнения 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

Я попытался....

Вопрос / Заключение

Ничего из этого не сработало. Я полагаю, что отладка вещей на guest обычно не помогает, потому что команда запускается с sudo. Поэтому мне нужно найти способ дать guest разрешение на $DISPLAY или .Xauthority sudo только для этой единственной команды.

Начиная с Ubuntu 16.04, DISPLAY больше не на :0. Это число, которое может варьироваться в зависимости от того, сколько пользователей одновременно вошли в систему на консоли.

Для решения проблемы необходимо настроить sudo сохранить DISPLAY переменная окружения.

Добавьте файл конфигурации в /etc/sudoers.d каталог, содержащий следующее:

Defaults env_keep += "DISPLAY"

Это позволит sudo передать DISPLAY переменную окружения к программе, которую она запускает, и эти программы затем смогут подключиться к правильному DISPLAY.

Вам необходимо установить xhost

для арки:

sudo pacman -S xorg-xhost

а затем запустите:

xhost +