você está aqui: Home  → Arquivo de Mensagens Programe sua mente para aprender inglês - ebook gratuito

Abrir aplicação gráfica em um host remoto através do SSH a partir do usuário root

Colaboração: Islan Rocha

Data de Publicação: 11 de maio de 2011

Alguma vez você já precisou abrir um aplicativo gráfico em uma estação remota com os privilégios do próprio usuário que a utiliza?

Recentemente precisei configurar um aplicativo para um usuário específico em uma estação remota, porém não queria ocupar a estação do usuário enquanto configurava o aplicativo. Neste caso, abrí-lo através de uma conexão SSH com o X habilitado seria o ideal.

Quando você possui o usuário e senha do host remoto no qual quer configurar o aplicativo isso não é problema, bastando fazer algo do tipo:

  info02@info02:~$ ssh -X compras@compras03
  compras@compras03's password:
  compras@compras03:~$ xsane

O aplicativo abrirá sem problemas e qualquer alteração em suas configurações serão guardadas no perfil deste mesmo usuário.

Suponhamos que você não tenha a senha do usuário para o qual deseja configurar o software. O que fazer?

Podemos tentar logar como super usuário, alterar o perfil para o usuário que queremos e tentar abrir o software. Porém receberemos um erro:

  info02@info02:~$ ssh -X root@compras03
  root@compras03's password:
  compras03:~# su - compras
  compras@compras03:~$ xsane
  
  (xsane:3095): Gtk-WARNING **: cannot open display:
  compras@compras03:~$

A sequência para conseguir abrir a aplicação com sucesso seria:

  1. Logar na estação remota com usuário que você possui habilitando o X. (loguei como root);
  2. Confirmar o Display setado nas variáveis de ambiente (echo $DISPLAY) ;
  3. Verificar e copiar a linha que contém o "cookie" relacionado ao display setado em nossa seção (xauth list);
  4. Alternar para o usuário que deve ter o software configurado em seu perfil( su < usuario>);
  5. Adicionar o cookie do display ao novo usuário (xauth add < linha copiada no passo 3>);
  6. Executar a aplicação.

Um exemplo prático destes passos pode ser visto abaixo:

  info02@info02:~$ ssh -X root@compras03
  root@compras03's password:
  compras03:~# echo $DISPLAY
  localhost:10.0
  compras03:~# xauth list
  compras03/unix:11  MIT-MAGIC-COOKIE-1  e2564ead0158e22db6b243ed3008bdc8
  compras03/unix:10  MIT-MAGIC-COOKIE-1  4120ad75e0a2be45464d6aa8217a0d48
  compras03:~# su compras
  compras@compras03:/root$ xauth add compras03/unix:10  MIT-MAGIC-COOKIE-1  4120ad75e0a2be45464d6aa8217a0d48
  compras@compras03:/root$ xsane

Isso pode ser bem útil no dia a dia. ;)

Islan Rocha é bacharel em Ciência da Computação, pós-graduando em Administração de Redes Linux pela Universidade Federal de Lavras. Usuário Linux e disseminador da cultura open source desde 2003.


Veja a relação completa dos artigos de Islan Rocha