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 é
:0
quando 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
:42
has cookie123456
”. O arquivo de autoridade X é normalmente indicado na variável de ambienteXAUTHORITY
. Se$XAUTHORITY
nã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