usando o Sudo com o Gedit falha do servidor XForwarded

0

O servidor centos e a máquina host ubuntu têm o gedit instalado. O login raiz no servidor é bloqueado e somente um usuário pode efetuar login via SSH por meio de chaves rsa.

Quando eu logar no servidor com -X fornecido como parâmetro, eu posso usar o gedit como:
gedit filename.txt &
e o arquivo abre no gedit para eu editar e salvar. Mas se eu fizer o Sudo para editar arquivos, eu recebo o seguinte erro:

sudo gedit filename.txt &

[1] 11039
[user@server ~]$ X11 connection rejected because of wrong authentication.

** (gedit:11040): WARNING **: Could not open X display
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.

(gedit:11040): Gtk-WARNING **: cannot open display: localhost:10.0

[1]+  Exit 1                  sudo gedit filename.txt

Como posso usar o Gedit em tal situação?

    
por Gilles 06.09.2016 / 14:47

2 respostas

2

Você pode usar o comando sudoedit .

EDITOR=gedit sudoedit filename.txt

o que isto faz é pegar uma cópia do arquivo, depois rodar o editor como você, então se ele detectar que o arquivo foi alterado copie os resultados de volta.

Na maioria dos casos, tem o mesmo efeito que sudo gedit filename.txt , mas executa o editor sem privilégios e, portanto, o encaminhamento do X ainda deve funcionar.

    
por 06.09.2016 / 14:50
1

Apenas para fornecer uma explicação, quando você executar sudo , ele redefinirá muitas variáveis de ambiente, incluindo $HOME , que é redefinido para a HOME de root ( /root provavelmente). Quando você executa seu programa X11, ele precisa de um cookie mágico XAUTHORITY para permitir que ele se conecte ao DISPLAY. O cookie apropriado foi colocado por ssh -X in ~/.Xauthority no controle remoto quando você se conectou.

Mas depois do sudo, seu programa X11 procurará em /root/.Xauthority e, portanto, não obterá cookies ou cookies antigos e obsoletos.

Daí as mensagens autenticação errada que você vê. Existem várias soluções para preservar ou restaurar $HOME após o sudo, mas para o seu caso particular, é mais sábio usar sudoedit como na outra resposta.

    
por 06.09.2016 / 18:22