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.014 ]

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

Corrigindo instabilidade de conexão das placas de rede wireless Realtek RTL8188xx/8192xx/8723xx/8821xx

Testando microfone pelo terminal sob o ALSA

Alterando as ID tags de seus arquivos de áudio em massa pelo terminal

Repositórios oficiais do Skype para GNU/Linux

Vínculos simbólicos - Mantendo suas configurações salvas em nuvem

Leitura recomendada

GoogleCL: O poder do Google na linha de comando

Ícones com cadeado no Linux

Compactando e dividindo um arquivo no disquete

Utilização do comando cat

Logsave: Registrando comandos locais ou remotos

  

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