Um programa X precisa de duas informações para se conectar a um monitor X.
Ele precisa do endereço da tela, que normalmente é :0
quando você está conectado localmente ou :10
, :11
etc., 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 DISPLAY
variá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 :42
has cookie 123456
”. O arquivo de autoridade X é normalmente indicado na XAUTHORITY
variável de ambiente. Se $XAUTHORITY
nã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, DISPLAY
está definido, mas os programas evidentemente não conseguem encontrar o arquivo de cookies. Verifique o valor de XAUTHORITY
na sua sessão e abaixo su
.
Se XAUTHORITY
não estiver definida na sua sessão e su
define a HOME
variável de ambiente para o diretório home do usuário root, então você precisa definir XAUTHORITY
para /home/msz/.Xauthority
onde /home/msz
é seu diretório home.
Se for su
removido XAUTHORITY
do ambiente, coloque-o de volta ou configure su
para 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 .Xauthority
arquivo 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
export $(dbus-launch)
ou usarxhost [+]
para poder iniciar programas usando o X e sua conta de superusuário.