Não é possível conectar ao servidor X: 0,0 como superusuário

10

Quando estou online, recebo o seguinte erro e a ferramenta não inicia:

[root@dhcppc9 lin64]# ./ise
No protocol specified
_pn: cannot connect to X server :0.0

Mas está tudo bem quando eu não sou um superusuário. Porquê isso?

Editar

[root@dhcppc9 lin64]# export $(dbus-launch)
No protocol specified

alguma sugestão?

Além disso

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"
msz
fonte
Este é um clássico. Você pode fazer export $(dbus-launch)ou usar xhost [+]para poder iniciar programas usando o X e sua conta de superusuário.
41754 31/01
Fiz os dois, veja a edição acima
msz
Pode ser $ xhostpara ver o acesso atual e $ xhost +habilitar o acesso de qualquer host. Você costuma fazer isso a partir de um terminal virtual que você sabe com certeza que pode gerar programas usando o X.
41754
@ galegosimpatico: por que o lançamento de um servidor dbus resolveria esse problema?
Bananguin
Quando você não é superusuário, o que echo $DISPLAYmostra? Qual usuário pertence ao processo xserver, ao qual você deseja usar? (você pode descobrir o último usando por exemplo ps faux)
Bananguin

Respostas:

12

Um programa X precisa de duas informações para se conectar a um monitor X.

  • Ele precisa do endereço da tela, que normalmente é :0quando você está conectado localmente ou :10, :11etc., quando está conectado remotamente (mas o número pode mudar dependendo de quantas conexões X estiverem ativas). O endereço da tela é normalmente indicado na DISPLAYvariável de ambiente.

  • Ele precisa da senha para a exibição. As senhas de exibição X são chamadas de cookies mágicos . Os cookies mágicos não são especificados diretamente: eles são sempre armazenados em arquivos de autoridade X, que são uma coleção de registros no formato “display :42has cookie 123456”. O arquivo de autoridade X é normalmente indicado na XAUTHORITYvariável de ambiente. Se $XAUTHORITYnão estiver definido, os programas serão usados ~/.Xauthority.

Consulte Abrir uma janela em um monitor X remoto (por que "Não é possível abrir o monitor")? para mais detalhes.

No seu caso, DISPLAYestá definido, mas os programas evidentemente não conseguem encontrar o arquivo de cookies. Verifique o valor de XAUTHORITYna sua sessão e abaixo su.

Se XAUTHORITYnão estiver definida na sua sessão e sudefine a HOMEvariável de ambiente para o diretório home do usuário root, então você precisa definir XAUTHORITYpara /home/msz/.Xauthorityonde /home/mszé seu diretório home.

Se for suremovido XAUTHORITYdo ambiente, coloque-o de volta ou configure supara não fazer isso.

Se o seu diretório pessoal estiver em alguns sistemas de arquivos como o NFS, o root poderá não conseguir lê-lo diretamente. Nesse caso, você pode copiar o .Xauthorityarquivo para um local diferente em um sistema de arquivos não NFS:

XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY
Gilles 'SO- parar de ser mau'
fonte
1
Eu criei um link simbólico e funcionou também. Aqui está:ln -s /home/otheruser/.Xauthority ~
Can Geliş
XAUTHORITY para mim foi definido como um arquivo que já não existia:
pbhj
4

Você está executando o xhost como root!

execute xhost como o usuário normal xhost +, torne-se root e tente novamente.

btw como outros apontaram xhost +permite que qualquer usuário de qualquer host

X Tian
fonte
Muitos sistemas modernos são configurados para que xhostnão funcionem. Se isso acontecer, pelo menos corra xhost +localhost, não xhost +!
Gilles 'SO- stop be evil'
Entenda, esse é um bom ponto. Obrigado pelo teu conselho.
X Tian
0

XAUTHORITY para mim foi definido como um arquivo que não existia mais:

$ echo $XAUTHORITY

/tmp/xauth-1000-_0

Então eu fiz

unset XAUTHORITY

e então consegui me conectar ao meu aplicativo como root usando o kdesudo (neste caso kdesudo bleachbit)

pbhj
fonte
0

Executar como usuário normal

xhost + localhost

habilite o superusuário

sudo su 

finalmente vá para o exemplo do servidor

cd /usr/local/Ampps

finalmente execute ./Ampps

agradeça-me em 2020

Mr Mash
fonte