sudo + x11 aplicativo não funciona corretamente

3

Não consegui obter nenhum programa que exigisse que o x11 (por exemplo, gedit, nautilus) funcionasse com o sudo. Usar o gksudo falharia silenciosamente, enquanto no terminal eu recebi o seguinte erro:

sudo nautilus

** (nautilus:4160): WARNING **: Command line 'dbus-launch --autolaunch=cced40b4aa1d252bc89d3a6a0000000a --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n
Could not parse arguments: Cannot open display: 

Com a ajuda de um amigo, consegui encontrar uma solução alternativa: se eu executar xhost + como um usuário sem privilégios e, em seguida, export DISPLAY=:0 como root após um sudo su , ele finalmente funciona (sem a etapa xhost, recebi um erro de protocolo indefinido). No entanto, eu não entendo porque eu tenho esse problema, e é uma solução trabalhosa - eu pensei em adicionar um 'export DISPLAY =: 0 "no .bashrc do root, mas isso só é chamado se eu estou processando, não se eu apenas sudo.

Alguma ideia de como resolver adequadamente este problema?

    
por manuhalo 04.12.2012 / 18:19

2 respostas

1

Em geral, lembre-se de incluir seu sistema operacional (imagino que você esteja no Linux) e distribuição.

Por padrão, o servidor X não permite que outros usuários (por exemplo, root no seu caso) se conectem a uma instância X existente. Isso pode ser substituído pelo comando xhost + , após o qual o root pode se conectar à sua sessão X existente.

Exportar o DISPLAY não deve ser necessário, tem certeza de que foi? Você deve estar ok simplesmente executando xhost + e, em seguida, sudo gedit ou qualquer outra coisa. Se for esse o caso ( e você não se importa com o pequeno risco de segurança ), você pode adicionar xhost + ao seu ~/.bashrc .

Como uma solução horrível, você pode executar sudo especificando a variável $DISPLAY :

sudo DISPLAY=:0 gedit

Para automatizar, você pode adicionar essas linhas ao seu ~/.bashrc :

xhost + 
alias sudo='sudo DISPLAY=:0'

Este é um hack horrível, e eu gostaria de saber como você conseguiu se colocar em uma situação onde é necessário :). Como eu disse no meu comentário acima, isso realmente deve funcionar fora da caixa no Ubuntu (e na maioria dos outros sistemas modernos de desktop Linux). A última vez que tive que mexer com xhost e DISPLAY quando eu estava trabalhando com RedHat cerca de 10 anos atrás ...

    
por 04.12.2012 / 18:24
0

Eu uso gksu , ele cuida do encaminhamento xauth seguro

    
por 27.09.2017 / 19:57