Я установил/usr/local/stata/xstata-mp как корень, полномочия 755.
Когда я пытаюсь запустить эту программу из некорневой учетной записи через терминал, я добираюсь:
user@host ~ % /usr/local/stata/xstata-mp
(xstata-mp:8030): Gtk-WARNING **: 10:09:24.384: cannot open display: 0
"Это нечетно", я думаю, я просто знаю, что установил DISPLAY=0
в моем .zshrc, "Ну, возможно, я должен явно сделать так при выполнении этой команды?" Таким образом, я пробую:
user@host ~ % DISPLAY=0 /usr/local/stata/stata-mp
(xstata-mp:8201): Gtk-WARNING **: 10:13:28.638: cannot open display: 0
Править: на комментарий @steeldriver я также попробовал ДИСПЛЕЙ =:0
Я имею глупца вокруг и нахожу, Почему не делают gksu/gksudo или запуска графического приложения с работой sudo с Уэйлендом? который кажется обещанием (хотя я не использую Уэйленд, я нахожусь на Ubuntu 18.10, и Уэйленд остается установленным). Я пробую ниже команды как user@host, и как su в административной учетной записи:
user@host ~ % xhost -si:localuser:root
xhost: unable to open display "0"
Я становлюсь отчаянным, и попытка:
user@host ~ % DISPLAY=0 xhost -si:localuser:root
xhost: unable to open display "0"
Я пробую другие числа дисплея все напрасно. Я думаю, что "Я - newb, возможно localhost
действительно средства [ЛОКАЛЬНЫЙ ПОЛЬЗОВАТЕЛЬ] и пробуют упомянутыми выше перестановками.
user@host ~ % xhost -si:user:root
xhost: unable to open display "0"
Оказывается, что я - newb, но это не помогло.:)
Как я могу заставить xhost волшебство произойти так, чтобы Gtk не закатывал истерику, и я могу просто запустить свое приложение (как user@host)?
РЕДАКТИРОВАНИЕ 22.03.2019:
pgrep -a Xorg
3907 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/123/gdm/Xauthority -background none -noreset -keeptty -verbose 3
7370 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
По некоторым причинам (вполне, вероятно, имеющий отношение ко мне являющийся вышеупомянутым newb), хотя echo $DISPLAY
возвраты :0
, если я ввожу who
Я вижу, что мой дисплей на самом деле :1
(?!), так, чтобы, если я вызываю DISPLAY=:1 /usr/local/stata/stata-mp
программа запускается без ошибки.
Повторить мое решение unable to open display #
:
who
и отметьте фактическое число дисплея (включая двоеточие если существующий)xhost
, или /usr/local/stata/stata-mp
), введите DISPLAY=[INSERT NUMBER YOU NOTED HERE] [x COMMAND HERE]
Я буду с удовольствием upvote и принимать другой ответ, который может помочь мне понять это на вид несоответствующее поведение.
Попробовать xhost +si:localuser:root
Это говорит xserver, что Вы используете (ли демонстрирующийся:0 или:1, или везде, где), чтобы принять, что соединения от локальных пользователей, названных 'корнем' - то есть, программы с SUID, базируются, или Вы сделали sudo
перед.
Ни одна из схем xauth или xhost не позволяла пользователю root открывать экран в Debian 10 (Buster) или Ubuntu 20.04 из терминала, работающего под управлением root, через «su» или приложение, запущенное с помощью «sudo».
Кто-то (не помню кто) написал (не помню где) добавить следующую строку в /etc/pam.d/su и /etc/pam.d/sudo:
session optional pam_xauth.so
Было бы полезно, если бы это было (а) легче найти или (б) таким образом в дистрибутивах.