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 xhost
ou algo assim?
Responder1
Execute o seguinte comando para dar userBname
acesso ao display: xhost +SI:localuser:userBname
Você 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.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 ambiental DISPLAY
para que os programas saibam onde colocar sua saída gráfica. Permitir diferentes DISPLAY
variá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: -
- Abra um terminal x como o usuário com a sessão X existente.
- 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 exemplomyhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- Abra um segundo terminal como usuário inicial, mas mude o usuário (su) para o ID desejado, por exemplo
su - user2
- Agora que você trocou de usuário, emita o comando
xauth add
e cole a linha que você copiou anteriormente no estágio 2 e pressione Enter, por exemploxauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- 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