Два графических приложения как разные пользователи на одном экране

Два графических приложения как разные пользователи на одном экране

Я вошел в систему как пользователь A. Я хочу запустить приложение с графическим интерфейсом как пользователь B. Пользователь, не root. Пользователь B тоже локальный, не удаленный, мне нужны только разные переменные окружения. Я не хочу запускать второй X, я хочу, чтобы они были на одном дисплее. У меня нет проблем с программами, запущенными в терминале, все su - ...работает. Для графического интерфейса есть сообщение об ошибке:

Application initialization failed: couldn't connect to display ":0.0"

или

Gtk-WARNING **: cannot open display: :0.0

Есть ли хороший способ это исправить? Статья о правильном использовании xhostили что-то в этом роде?

решение1

Выполните следующую команду, чтобы предоставить userBnameдоступ к дисплею: xhost +SI:localuser:userBname​​Вы можете использовать , xhost +чтобы предоставить доступ всем; однако это небезопасно. Лучше предоставить доступ на основе пользователя. Правильный синтаксис для записей xhosts для локальных пользователей — SI:localuser:username.

Затем su userBname, export DISPLAY=:0.0, и, наконец, запустите свою программу GUI. Хотя вы ранее предоставили доступ к дисплею с помощью xhost, вы также должны задать переменную окружения DISPLAY, чтобы программы знали, где размещать свой графический вывод. Разрешение различных DISPLAYпеременных для разных пользователей позволяет нескольким пользователям, подключенным к одной машине, использовать различные физические терминалы.

решение2

Просто используйте gksu -u желаемое имя пользователя, введите пароль, и все готово.

DISPLAY=:1.0 gksu [-u <user>] [options] <command>

В качестве альтернативы вы можете использовать su, а затем установить XDISPLAY на нужный экран и, наконец, запустить нужное вам приложение.

решение3

Вот как я этого добиваюсь:

  1. Откройте X-терминал как пользователь с существующим X-сеансом.
  2. Введите команду xauth list. Вы должны увидеть значения X Magic cookie, которые аутентифицируют запросы к X-серверу для различных дескрипторов. Скопируйте тот, который имеет ссылку "unix". Например myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  3. Откройте второй терминал как первый пользователь, но переключите пользователя (su) на нужный вам идентификатор, напримерsu - user2
  4. Теперь, когда вы сменили пользователя, введите команду xauth addи вставьте строку, которую вы ранее скопировали на этапе 2, затем нажмите клавишу Enter, например: xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  5. Запустите X-программу во втором терминале из командной строки, например:firefox

Вот и все!

решение4

Сначала добавьте второго пользователя в localuser:

$ xhost SI:localuser:user2

localuser:player добавляется в список контроля доступа

Затем запустите свои приложения:

$ sudo -u user2 -H firefox

Связанный контент