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?
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!!!
[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