Um programa X precisa de duas informações para se conectar a um monitor X.
-
Ele precisa do endereço da exibição, que normalmente é
:0quando você está conectado localmente ou:10,:11, etc. quando você está conectado remotamente (mas o número pode mudar dependendo de quantas conexões X estão ativas). O endereço da exibição é normalmente indicado na variável de ambienteDISPLAY. -
Precisa da senha para a exibição. X senhas de exibição são chamadas de cookies mágicos . 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 do formulário “display
:42has cookie123456”. O arquivo de autoridade X é normalmente indicado na variável de ambienteXAUTHORITY. Se$XAUTHORITYnão estiver definido, os programas usarão~/.Xauthority.
Veja Abra uma janela em um display X remoto (por que" Não é possível abrir a tela ")? para obter mais detalhes.
No seu caso, DISPLAY está definido, mas os programas evidentemente não conseguem encontrar o arquivo de cookie. Verifique o valor de XAUTHORITY em sua sessão e em su .
Se XAUTHORITY não estiver definido em sua sessão e su definir a variável de ambiente HOME como o diretório inicial do root, será necessário definir XAUTHORITY to /home/msz/.Xauthority , em que /home/msz é seu diretório inicial.
Se su remover XAUTHORITY do ambiente, coloque-o de volta ou configure su para não fazer isso.
Se o seu diretório home estiver em alguns sistemas de arquivos como o NFS, o root pode não conseguir lê-lo diretamente. Nesse caso, você pode copiar o arquivo .Xauthority 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