“Erro: XDG_RUNTIME_DIR não definido no ambiente.” Ao tentar executar o nautilus como root

14

Estou tentando executar o nautilus como root, mas quando executo "sudo nautilus" no terminal, recebo o seguinte erro:

erro: XDG_RUNTIME_DIR não definido no ambiente.

(nautilus: 9341): Gtk-WARNING **: não é possível abrir a tela:

O problema não ocorre quando tento executar o nautilus como não raiz. Estou usando o ubuntu 14.04. Alguém sabe como eu posso consertar isso?

quantumbutterfly
fonte
Apenas para constar, acabei aqui depois que tive o mesmo erro ao tentar executar o X11Forwarding via ssh. Solução: Esqueci de usar a -Xopção ao iniciar minha sessão ssh.
JW.

Respostas:

13

Quando você executa o software como outro usuário, está de fato iniciando o novo ambiente mínimo e isolado que não carrega algumas variáveis ​​"excessivas" (entre outras variáveis ​​responsáveis ​​por injetar bibliotecas ou definir certos privilégios). Substitua sua sudo nautiluschamada pelo seguinte: ela continuará com as configurações específicas do servidor x do servidor a partir da sessão atual:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

Esta é uma solução de baixo nível única, mas funcionará em uma máquina mal configurada. Se você deseja "corrigir seu sudo" permanentemente, precisará encontrar o problema com a configuração do seu ambiente e corrigi-lo conforme descrito em outras respostas.

cprn
fonte
1
@ Ciprian Guerra - Isso não é definido no ambiente, apenas permite que você execute uma vez. Isso dificilmente é útil. A execução sudo nautilusdeve funcionar normalmente no terminal quando executada. Normalmente, sempre que faço isso no terminal em uma nova instalação, ele é aberto normalmente com o sudo.
@ user94959 Você não entende o princípio básico - o novo ambiente está sendo definido, as variáveis ​​são transferidas, a tarefa é executada quando a tarefa sai desse ambiente separado está sendo destruída. Portanto, sim, você precisa definir as variáveis ​​para cada novo ambiente. Se você deseja mais lendo Experimente o material pkexece sudopáginas de manual, bem como o google para a disputa relacionada.
Cprn 04/0315
@CyprianGuerra, então como é que quando tento abrir o aplicativo no menu da área de trabalho que requer privilégios elevados pode ser executado após a entrada da senha? obviamente, algo está faltando na configuração, se não for iniciado corretamente, porque não está definido no ambiente XDG como o normal? o problema é quando seu ditado Cannot open displaysignifica que algo está faltando em seu arquivo de configuração porque algo o modificou e o removeu do ambiente quando não deveria. Então, como ele pode voltar ao ambiente permanentemente, para que eu não precise lidar com isso?
1
@sherrellbc Estou dizendo explicitamente o kit de políticas para executar envantes da execução nautiluse o primeiro cuida da definição das variáveis ​​para mim. Você pode conferir man env.
CPRN
1
@cprn D'oh. Eu deveria ter verificado a página de manual primeiro. env COMMAND ARG ...
precisa saber é o seguinte
1

Eu também tive o mesmo problema no Ubuntu 14.04. Abra o terminal pressionando,

Ctrl+ Alt+T

então sudo visudo

mude a linha

Padrões env_keep = "https_proxy"

para

Padrões env_keep + = "https_proxy"

Funcionou como charme.

Om Prakash
fonte
Funciona, mas definir o mesmo para $XAUTHORITYdesafia o objetivo.
CPRN
1

Para facilitar, mais expliquei a nova inicialização do meu sistema.

Depois de todas as explicações aqui, cheguei ao resultado - e "env" no terminal já disse que é certo para esta sessão:

Essas duas linhas para usar a variável de ambiente:

para o comportamento tmp que eu escolhi:

mkdir -pv ~ / .cache / xdgr

Para definir a variável de ambiente:

exportar XDG_RUNTIME_DIR = $ PATH: ~ / .cache / xdgr

Depois de fechar o terminal e uma nova abertura para o recall de env, eles dizem:

XDG_RUNTIME_DIR = / run / user / 1001

nota: está ok para o usuário no ubuntu, o root precisa de mais (última informação por termo - com permissões 0700)

Andrew
fonte
0

Se você está recebendo esse erro no Docker; isto é o que eu faço

# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged  --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments
Alex Punnen
fonte