ssh e sudo, mas não $DISPLAY

ssh e sudo, mas não $DISPLAY

Normalmente eu faço isso no ssh para obter um aplicativo X usandosudo su

ssh -X server

Login OKI

xauth list $DISPLAY

que retorna para mim

server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

Então eu faço

sudo su
xauth add server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

E depois de executar um aplicativo X... entendi, está correto.

O problema está no Centos7, eu faço

xauth list $DISPLAY

E não retorna nada. Tento adicionar cookies mágicos do MIT fornecidos por

xauth list

Mas é claro que não funciona. O encaminhamento X normal via ssh, sem sudo funciona.

As configurações do sshd são as mesmas em 3 servidores:

  1. slackwareFUNCIONA
  2. hpux FUNCIONA
  3. centos7 NÃO ESTÁ FUNCIONANDO

Responder1

Outra solução é mesclar o arquivo .Xauthority do usuário atual com o do usuário root.

  1. ssh user@host
  2. altere as permissões do arquivo .Xauthority para que o root também tenha acesso a ele.
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

Teste

gedit somefile.log

Deve abrir uma janela do gedit.

Responder2

para tornar a solução permanente você pode modificar o .bashrcarquivo do usuário de login adicionando

if [ -z "$XAUTHORITY" ]; then
    export XAUTHORITY=$HOME/.Xauthority
fi

além disso você tem que atualizar seu sudoersarquivo adicionando a linha

Defaults env_keep+="DISPLAY XAUTHORITY"

se o root tiver permissões de leitura no .Xauthorityarquivo do usuário de login, você poderá usar aplicativos X.

Responder3

Solução encontrada. Um método alternativo copiado desteblog Usando este script

userfirst=sshloginuser
usersecond=sudoorsuuser

$usersecond@host$

    su - $userfirst -c 'xauth list' |\
         grep `echo $DISPLAY |\
             cut -d ':' -f 2 |\
             cut -d '.' -f 1 |\
             sed -e s/^/:/`  |\
         xargs -n 3 xauth add

Ou simplesmente registrando como usuário1

xauth list

su ou sudo su usuário2

xauth add OUTPUTOFXAUTHLIST

Responder4

Um comando genérico muito simples:

sudo xauth merge /home/$USER/.Xauthority

Isso ativa o ambiente root e mescla as informações xauth do usuário atual (não root).

Outra alternativa, deve evitar problemas de propriedade relatados nos comentários no Slackware:

cat ~/.Xauthority | sudo xauth merge -

informação relacionada