Я знаю, что существует куча похожих вопросов, но все они касаются сеансов 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 /
моему гостю
xauth add
из списка xauth
другого пользователя По умолчанию env_keep + = "DISPLAY "
в / etc / sudoers
(здесь ошибка !!!) Ничего из этого не сработало. Я полагаю, что отладка на гостевой
в общем случае не поможет, потому что команда запускается с sudo. Поэтому мне нужно найти способ предоставить гостю
разрешение для $ DISPLAY
или .Xauthority
sudo только для этой единственной команды.
Начиная с Ubuntu 16.04, DISPLAY
больше не на : 0
. Это число, которое может варьироваться в зависимости от того, сколько пользователей одновременно вошли в консоль.
Чтобы решить проблему, вам необходимо настроить sudo
, чтобы сохранить ДИСПЛЕЙ
переменная окружения.
Добавьте файл конфигурации в каталог /etc/sudoers.d
, содержащий следующее:
Defaults env_keep += "DISPLAY"
Это позволит sudo
передать ДИСПЛЕЙ
переменную среды в программу, которую она запускает, и эти программы затем смогут подключиться к правильному ДИСПЛЕЮ
.
Вам необходимо установить xhost
для арки:
sudo pacman -S xorg-xhost
а затем запустить:
xhost +