Dois aplicativos GUI como usuários diferentes na mesma tela

Dois aplicativos GUI como usuários diferentes na mesma tela

Estou logado como usuário A. Quero executar um aplicativo GUI como usuário B. Usuário, não root. O usuário B também é local, não remoto, só preciso de variáveis ​​de ambiente diferentes. Não quero rodar o segundo X, quero-os no mesmo display. Não tenho problemas com programas rodando no terminal, 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 consertar isso? O artigo sobre o uso correto xhostou algo assim?

Responder1

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

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

Responder2

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

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

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

Responder3

É assim que eu consigo isso: -

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

É isso!

Responder4

Primeiro adicione seu segundo usuário ao localuser:

$ xhost SI:localuser:user2

localuser:player sendo adicionado à lista de controle de acesso

Em seguida, execute seus aplicativos:

$ sudo -u user2 -H firefox

informação relacionada