Abrindo aplicativos gráficos como usuário root logado como usuário comum sem kdesudo ou gksudo

Publicado por Luís Fernando C. Cavalheiro em 02/03/2018

[ Hits: 3.039 ]

Blog: https://github.com/lcavalheiro/

 


Abrindo aplicativos gráficos como usuário root logado como usuário comum sem kdesudo ou gksudo



Ubunteiros e usuários de GNU/Linux, aqui começa mais uma Dica do Dino® trazendo para vocês alegria, diversão e ironia sem parar. Na Dica de hoje vamos abordar um problema que os usuários de algumas distros enfrentam. Suponhamos que você, por alguma razão doentia e descerebrada, queira abrir o seu gerenciador de arquivos (tipo o Nautilus ou o Thunar) como root mas não tem nem o kdesudo nem o gksudo. Normalmente, você tentaria abrir um terminal e chamá-lo usando o comando su, como no exemplo:

su -
Senha:

# thunar
No protocol specified
Thunar: Não foi possível abrir a tela:

Isso vai acontecer com qualquer aplicativo gráfico que você queira rodar como root enquanto logado como usuário comum. Como o root não iniciou o X, não vai existir o arquivo /root/.Xauthority, que define o protocolo da sessão gráfica (o que explica a primeira mensagem de erro). Pela mesma razão, o root não vai ter a variável DISPLAY definida (o que explica a segunda mensagem de erro).

Mas Dino®, eu preciso realmente ver meus arquivos como root e eu não sei usar o terminal para isso, preciso do gerenciador gráfico! Como faço?

Simples, meu jovem, e com um único comando:

USERATUAL=$(whoami) ; ROOTDISPLAY=$DISPLAY ; su -l -c "HOME=/root ; DISPLAY=$ROOTDISPLAY ; cp /home/$USERATUAL/.Xauthority /root/ ; thunar"

Imagino que você queira explicações da pajelança feita no terminal, então aí vão elas:
  • USERATUAL=$(whoami): vamos precisar de algum .Xauthority para o root, então vamos copiar o arquivo do usuário comum mesmo que vai funcionar. Para isso, precisamos definir essa variável para ser usada no comando su lá na frente;
  • ROOTDISPLAY=$DISPLAY: define uma variável que será usada para definir a variável DISPLAY do root, lá na hora do su;
  • su -l -c "HOME=/root ; DISPLAY=$ROOTDISPLAY ; cp /home/$USERATUAL/.Xauthority /root/ ; thunar": aqui que acontece toda a magia. Usamos o comando su para definir umas poucas variáveis de ambiente que precisaremos (especificamente a HOME, que define o caminho do diretório $HOME do usuário; e DISPLAY, que indica em qual tela do X o programa será aberto), para copiar o .Xauthority do usuário logado na máquina para o $HOME do root (/root), e por fim chamamos o comando (no caso do exemplo, o Thunar).

E com isso você pode abrir qualquer aplicativo gráfico como root enquanto logado como usuário comum sem ter que recorrer a kdesudo ou gksudo. O Dino® foi até bonzinho e elaborou um um script puramente CLI para isso!

E com essa eu me despeço de todos vocês, desejando uma vida de compilação longa e próspera e GET SLACK OR DIE!!!

Outras dicas deste autor

FFmpeg: criando dois ou mais arquivos de saída simultaneamente

Xfce 4.12 no OpenSUSE 13.2

pv - Acompanhando progresso de comandos no terminal via barra de progresso

Spotify no OpenSUSE

Telegram Desktop parou de funcionar após atualização ou troca de idioma? Corrija isso já!

Leitura recomendada

Gravação de Áudio do Computador Via Terminal

Selecionando arquivos com o tar (backup)

Visualizando processos com o htop

Montando uma partição LVM

Alias definitivo

  

Comentários
[1] Comentário enviado por Fellype em 02/03/2018 - 11:03h

Legal a dica. Mas uma opção mais simples, usando o terminal, seria:
$ xhost +
Este comando gera uma mensagem do tipo:
access control disabled, clients can connect from any host

Depois é só proceder com o habitual:
$ su -
# thunar

Após fazer o que se quer:
# exit
$ xhost -
access control enabled, only authorized clients can connect

Eu, pelo menos, prefiro assim :-)
[]'s



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts