Использование Ubuntu 14.04 с Unity. Я вхожу с моим обычным пользователем (администратором) в графическом окружении. После входа в систему я хотел бы запускать GUI-команды, как если бы я был другим пользователем (обычным), для тестирования клиент-серверного приложения. Мне нужно несколько пользователей (один для сервера, а другой для каждого клиента), потому что каждому из них нужна своя $HOME
среда. В дальнейшем их предполагается устанавливать на отдельных машинах.
Итак, я открываю терминал и делаю:
su - user
Когда я запускаю любую команду с графическим интерфейсом (например, «xterm»), она сообщает обычное значение
Протокол не указан
Не удается открыть дисплей:
Я прочитал несколько способов решить эту проблему, используя xauth
, xhost
и т. Д., Но тот, который работал для моих целей, был:
admin# sudo cp ~/.Xauthority ~user/.
admin# sudo chown user ~user/.Xauthority
admin# su - user
user$ export XAUTHORITY=~/.Xauthority
Теперь я могу запустить любую команду с графическим интерфейсом, например xterm
.
Однако это решение работает только в рамках одного сеанса GUI. После перезагрузки компьютера файл .Xauthority
изменился, и это решение больше не действует, если только я снова не скопирую .Xauthority
, что утомительно и включает в себя команды sudo для копирования.
Итак, есть ли способ сделать его постоянным в .bashrc
или каким-то другим способом? Я имею в виду, что как только я открою терминал из GUI и войду в систему с помощью su - <user>
, он сможет выполнять команды, для которых требуется GUI, без необходимости выполнять все предыдущие действия.
Извините за английский. [+1121]
Можно использовать вход в систему локальной сети (ssh) вместо su
. Опция -X
позволит передать X соединений:
ssh -X username@localhost
, Чтобы это работало, у Вас должен быть безопасный сервер оболочки (sshd) работа хоста (apt install openssh-server
). Это предложит Вам пароль и отбросит Вас в оболочке, точно так же, как su - username
, но с передачей соединения X Window. Это работает на удаленные хосты, но также и локально.