Mês: janeiro 2016

bash: acessar display do X com outro usuário

Quem usa linux dificilmente larga o famoso prompt de comando.
Isso se deve ao grande poder e à conhecida versatilidade do BASH.

Entretando, existem sempre algumas dificuldades que a grande maioria passa.
Neste POST está mais uma dessas, bem como a solução.

Talvez você precise executar um programa no modo gráfico, mas com sua inicialização partindo dum comando.
Isso talvez aconteça pois você quer visualizar os erros/outputs deste programa em específico.

Pra isso, simplesmente você faz:

hudson@vostrolab ~/ $ programa

Mas talvez a idéia seja simplesmente executar um programa com outro usuário. Então você pensa:

hudson@vostrolab ~/ $ su – usuario -c “xlogo”

E aí você obtém:

Password:
No protocol specified
Error: Can’t open display: :0

Isso acontece pois as chaves usadas para autenticar sua sessão do X (modo gráfico) não são mais válidas a partir do momento em que você troca de usuário.
Tal medida de segurança parece exagero, mas é uma herança de quando as sessões X eram muito usadas em rede.

Pra resolver essa, basta liberar sua sessão X para autenticar outros usuários, usando o comando xhost.
Isso deve ser feito antes de trocar de usuário.

hudson@vostrolab ~/ $ xhost +local:local
non-network local connections being added to access control list
hudson@vostrolab ~/ $ su – usuario -c “xlogo”
Password:
hudson@vostrolab ~/ $

xlogo foi usado como exemplo de aplicação, pois abre uma simples ‘janela’ na tela.
Nesse ponto da execução, você deve ver sua aplicação normalmente, seja um mozilla ou um thunderbird =).

Não esqueça de desfazer a autorização com o ‘menos’ ao invés do ‘mais’:

hudson@vostrolab ~/ $ xhost -local:local
non-network local connections being removed from access control list

Referências: http://www.tuxradar.com/content/command-line-tricks-smart-geeks