Duas aplicações GUI como usuários diferentes na mesma tela

5

Estou logado como usuário A. Desejo executar um aplicativo GUI como usuário B. Usuário, não raiz. O usuário B também é local, não remoto, só preciso de variáveis de ambiente diferentes. Eu não quero rodar o segundo X, eu quero eles no mesmo display. Eu não tenho nenhum problema com programas em execução no terminal, o su - ... funciona. Para gráficos, há uma mensagem de erro:

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

ou

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

Existe uma boa maneira de corrigir isso? O artigo sobre o uso correto de xhost ou algo assim?

    
por Michas 30.04.2013 / 10:23

3 respostas

5

Execute o seguinte comando para conceder ao userBname acesso à exibição: xhost +SI:localuser:userBname Você pode usar xhost + para dar acesso a todos; no entanto, isso é inseguro. Melhor é dar acesso por usuário. A sintaxe correta para entradas de xhosts para usuários locais é SI:localuser:username .

Então, su userBname , export DISPLAY=:0.0 e finalmente execute seu programa GUI. Embora você tenha concedido acesso à exibição anteriormente com xhost , você também deve definir a variável de ambiente DISPLAY para que os programas saibam onde colocar sua saída gráfica. Permitir diferentes variáveis DISPLAY para usuários diferentes permite que vários usuários conectados a uma única máquina usem terminais físicos diferentes.

    
por 01.05.2013 / 00:57
1

Basta usar gksu -u nome de usuário desejado, digite a senha e você deve estar pronto para ir.

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

Alternativamente, você poderia usar su e, em seguida, definir XDISPLAY para a tela direita e, finalmente, iniciar o aplicativo desejado.

    
por 30.04.2013 / 22:54
0

É assim que eu faço isso: -

  1. Abra um terminal x como o usuário com a sessão X existente.
  2. Emita o comando xauth list . Você deve ver os valores do cookie X Magic que autenticam solicitações para o servidor X, para vários descritores. Copie aquele com a referência "unix". por exemplo. %código%
  3. Abra um segundo terminal como usuário inicial, mas mude o usuário (su) para o ID desejado, por exemplo, %código%
  4. Agora você trocou o usuário, emite o comando myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c e cole a linha que você copiou anteriormente no estágio 2 e, em seguida, pressione Enter. por exemplo. %código%
  5. Inicie um programa X no segundo terminal a partir da linha de comando, por exemplo: su - user2

É isso aí!

    
por 04.09.2017 / 18:17

Tags