Посещая старую тему запуска приложений X в качестве другого пользователя в Linux, поскольку решением всегда было « использовать gksu » для меня, но сегодня, когда мне это нужно и я попробую, это не работает.

Следуя тому, что такое ГКСУ и зачем ты это использовал, я попытался,

gksu -u otherusername xterm

После прохождения диалога, который запрашивает пароль, я получил:

$ gksu -u otherusername xterm
xterm: Xt error: Can't open display: :2

То есть это не работает для меня. Так,

Как запускать X-приложения под Linux под другим пользователем? Спасибо.

PS это Ubuntu 17.04:

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 17.04
Release:        17.04
Codename:       zesty

3 ответа3

1

Ubuntu 17, верно? Вы уверены, что на самом деле используете Xorg, а не Wayland? (т.е. ps auxfww самом деле показывает программу под названием X работает?)

Если вы используете Wayland--, который вы бы использовали по умолчанию: доступ к дисплею от пользователя root не разрешен из-за функции безопасности (кашель)(кашель). Они сказали, что вы можете обойти эту команду, прежде чем пытаться запустить gksu:

xhost si:localuser:root

Другой способ - просто запустить систему Ubuntu с обычной системой отображения Xorg; Вы можете установить это при входе в систему, я думаю.

Я никогда не использовал Ubuntu 17, хотя и определенно не пользователь Wayland. Это, вероятно, одна из причин того, что Ubuntu 18/LTS вернется к использованию классического Xorg по умолчанию.

Важное примечание: если ваше другое имя пользователя не является пользователем root, независимо от того, используете ли вы Wayland или классический Xorg, вам нужно выполнить следующую команду перед запуском вашей программы через gksu:

xhost si:localuser:otherusername

ОБНОВИТЬ:

Приведенное выше решение не работает для Ubuntu 17.04 Xorg из коробки:

$ xhost si:localuser:root
localuser:root being added to access control list
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  109 (X_ChangeHosts)
  Value in failed request:  0xe
  Serial number of failed request:  7
  Current serial number in output stream:  9

Похоже, что Ubuntu Xorg «сервер не построен с поддержкой SECURE_RPC, поэтому попытка добавить хост FamilyNetname (0xfe) не удалась».

Так что не из коробки решения для Ubuntu еще (но это остается в качестве ответа до рабочего одного существует).

0

Проверьте переменную окружения DISPLAY ; похоже, что новый пользователь пытается использовать display :2 , к которому, вероятно, не подключен X-сервер.

Вы можете попробовать что-то вроде: export DISPLAY=localhost:0.0 , который должен указать X-приложению otherusername использовать X-сервер текущего пользователя. (Я почти уверен, что это хак, потому что эта переменная должна быть правильно настроена без необходимости ее установки, некоторые подробности здесь.)

-1
  1. назначьте пароль этому otheruser . от имени суперпользователя:

    passwd otheruser

  2. Если программа sudo установлена, добавьте следующую строку в /etc/sudoers , например:

    user ALL = (otheruser) ALL

это позволит user выполнять любые программы / команды от имени пользователя otheruser:

`$ sudo -u otheruser xterm`

Пароль user будет запрошен.

можно сделать без запроса пароля, добавив директиву NOPASSWD : в строку выше:

user ALL = (otheruser) NOPASSWD: ALL

оригинал - https://ru.stackoverflow.com/questions/473607/%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0 % B8% D0% B5-% D0% BA% D0% BE% D0% БК% D0% B0% D0% BD% D0% B4% D1% 8B-% D0% BE% D1% 82-% D0% B4% D1% 80% D1% 83% D0% B3% D0% BE% D0% B3% D0% Be-% D0% BF% D0% BE% D0% BB% D1% 8C% D0% B7% D0% BE% D0 % B2% D0% B0% D1% 82% D0% B5% D0% BB% D1% 8F

Многие помогают дополнительные флаги -c или -p

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .