Não é possível conectar-se ao X Server ao executar o aplicativo com o sudo

29

Quando estou executando algum software usando o sudocomando, ele mostra um erro como

cannot connect to X server

Por exemplo, se eu executar o seguinte comando:

$ sudo gedit /etc/profile

Estou recebendo o seguinte comando

(gedit:6758): WARNING **: Command line `dbus-launch --autolaunch=84b871d735f31ffe014dc9ba00000009 --binary-syntax --close-stderr' 
exited with non-zero exit status 1: 
Autolaunch error: X11 initialization failed. 
Cannot open display:
Run 'gedit --help' to see a full list of available command line options.

Ou, se estou executando super-boot-manager, estou recebendo o seguinte erro

buc: cannot connect to X server

Por favor ajude.

Apurba
fonte
De onde você corre super-boot-manger?
Thor
Primeiro eu tentei correr super-boot-managerdiretamente do almoço da unidade, não funcionou. Então eu tentei no terminal, então eu recebi essas massagem de erro.
Apurba
Como em um terminal dentro do ambiente gráfico do usuário? O que echo $DISPLAYdiz : dizer? Você deve executá-lo sem, sudocomo super-boot-manageré executado sudointernamente.
Thor
echo $DISPLAYestá dando :0.0. E eu não estou correndo super-boot-managercomo sudo. Estou executando apenas usando o comando super-boot-managerdo terminal.
Apurba 16/08/12
1
Finalmente, o problema está resolvido. Acabei de adicionar a linha: Defaults env_keep="DISPLAY XAUTHORITY"no final de visudo. Obrigado a todos, especialmente @Thor pela ajuda.
Apurba 17/08/12

Respostas:

39

Você precisa permitir que o usuário root acesse o servidor X:

xhost local:root

E aponte o comando para a direita DISPLAY:

sudo DISPLAY=$DISPLAY gedit /etc/profile
Thor
fonte
Isso resolveu o problema de abrir geditcomo sudo, mas ainda não pode almoçar super-boot-manager. Está mostrando o mesmo erro
Apurba
15

Finalmente, o problema está resolvido. Acabei de adicionar a linha:

Padrões env_keep = "DISPLAY XAUTHORITY"

no final de visudo.

Para fazer isso você tem que correr

sudo visudo

ele abrirá o arquivo e depois adicionará a linha acima no final.

Obrigado a todos, especialmente @Thor pela ajuda

Apurba
fonte
1
Padrões env_keep = "DISPLAY" funciona para mim.
bagustris
Eu tenho procurado alto e baixo para esta resposta para sempre. Eu gostaria de poder votar vocês duas vezes por suas respostas. Muito obrigado! :)
Ev-
4

Complementando a resposta de Thor:

Corra xhost local:rootantes sudo gedit. Para tornar isso permanente, adicione a linha

xhost local:root

para o arquivo ~ / .xinitrc 1 . Crie o arquivo se ele não existir.


[1] https://askubuntu.com/a/720120/452398

adabru
fonte
Obrigado por fornecer uma resposta que forneça uma solução não permanente.
2NinerRomeo 5/01