Два приложения GUI как разные пользователи на одном экране

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

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

или

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

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

3 Solutions collect form web for “Два приложения GUI как разные пользователи на одном экране”

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

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

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

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

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

Вот как я это делаю:

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

Это оно!

  • Задача Cron в графическом интерфейсе
  • Как I * un * установить параметр в `xkbmap`?
  • Запустить окно в определенном размере и местоположении, есть ли общий инструмент для этого?
  • изменить местоположение окна терминала по умолчанию
  • Java не отображает текст меню
  • история файла .xsession-errors и что его предшествовало?
  • Как настроить xlock для поиска шрифтов?
  • Как исследовать X11, не видя нажатия клавиши?
  • Отображение ключа AltGr с помощью KDE On Ubuntu
  • Как мне начать X после ssh'ing в удаленную коробку?
  • выход на проектор, так как разрешение ноутбука составляет 16: 9, а проектор ниже
  • Объявить новый ключ-модификатор с помощью XKB
  • Interesting Posts

    Как создать Linux-диск с фиксированным размером, который никогда не заменяется на диск?

    Примеры параметров bash cd, например: cd -Pe @ $ directory

    Резервное копирование / восстановление полного VPS, не может загружаться с живых медиа

    Перенаправить вывод программы в файл с лимитом номера строки

    Почему $ HOME наследуется, когда я запускаю оболочку с sudo?

    Идентификатор файла устройства Pci?

    Как управлять пакетами исходного кода Debian с помощью aptitude или apt?

    Как завершить завершенную установку Debian?

    Как мне grep без пробелов?

    Как автоматизировать скрипт, который требует пароль ssh-ключа с регулярными интервалами

    Установить плейер debugfs

    Как очистить пакет в debian, не затрагивая другие пакеты?

    Профиль AppArmor: запрет доступа в интернет

    Выход Tmux медленнее, когда существуют вертикальные расщепления: почему?

    Почему / proc / net / if_inet6 не содержит всех IP-адресов из «ip addr»?

    Linux и Unix - лучшая ОС в мире.