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

Я знаю, что существует куча похожих вопросов, но все они касаются сеансов X-Forewarding и SSH.

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

Проблема

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

Настройки

Я расширяю / etc / sudoers файл со следующей строкой:

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

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

Скрипт

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

#!/bin/bash

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

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

Если гость входит в систему (через 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

Я пробовал ....

  • экспорт переменной $ DISPLAY до или в test.sh
  • cp в .Xauthority из другого / home / user / моему гостю
  • создать файл cookie xauth с помощью xauth add из списка xauth другого пользователя
  • добавить По умолчанию env_keep + = "DISPLAY " в / etc / sudoers (здесь ошибка !!!)

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

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

1
задан 17 April 2019 в 21:17
2 ответа

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

Чтобы решить проблему, вам необходимо настроить sudo , чтобы сохранить ДИСПЛЕЙ переменная окружения.

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

Defaults env_keep += "DISPLAY"

Это позволит sudo передать ДИСПЛЕЙ переменную среды в программу, которую она запускает, и эти программы затем смогут подключиться к правильному ДИСПЛЕЮ .

1
ответ дан 3 December 2019 в 23:05

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

для арки:

sudo pacman -S xorg-xhost

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

xhost +
1
ответ дан 8 January 2020 в 11:53

Теги

Похожие вопросы