Я знаю, что есть множество подобных вопросов, но все они касаются сеансов 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
$DISPLAY
переменная до или в test.sh
cp
в .Xauthority
от других /home/user/
к моему guest
xauth add
из xauth list
другого пользователяDefaults env_keep += "DISPLAY"
в /etc/sudoers
(здесь сделал ошибку !!!)Ничего из этого не сработало. Я полагаю, что отладка вещей на 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 +