Next Previous Contents

3. O xauth

O xauth trabalha de forma um pouco diferente do xhost. Basicamente, � criado um n�mero hexadecimal que � associado ao nosso DISPLAY, e que recebe o nome de MIT-MAGIC-COOKIE, ou mais simplesmente, magic-cookie. A qualquer cliente que queira se conectar ao nosso servidor � solicitado o magic-cookie, e o mesmo � comparado com o valor que est� associado ao nosso servidor X. Se os dois forem id�nticos, o cliente tem permiss�o para conectar-se, sen�o ele v� apenas uma mensagem de erro, informando que a conex�o n�o foi permitida.

Normalmente, os magic-cookies s�o criados pelo XDM, quando fazemos o login gr�fico, ou podem ser criados � m�o, e s�o armazenados em ~/.Xauthority, em forma bin�ria. Podemos ter v�rios magic-cookies no arquivo em quest�o, inclusive de outros servidores X.

Para dar permiss�o a um usu�rio de conectar seus clientes ao nosso servidor X, tudo o que precisamos fazer �, de alguma forma, passar o magic-cookie de nosso DISPLAY para o mesmo. Para isto usamos o xauth. Outra coisa importante: para poder utilizar o xauth, o acesso via xhost deve estar com o controle de acesso habilitado, e nenhum host deve estar listado no mesmo. Na hora de verificar a autoriza��o para controle de acesso, o X verifica sempre a lista do xhost primeiro.

3.1 Listando os Magic-Cookies

Para listar os magic-cookies de nosso arquivo .Xauthority, usamos a seguinte linha de comando:

$ xauth list
myhost.example.org/unix:0 MIT-MAGIC-COOKIE-1 3331a9560f24f62db48cae9d56a01c5d
                        
O xauth lista todos os magic-cookies que se encontram no arquivo .Xauthority de uma forma que podemos ler.

3.2 Inserindo um Magic-Cookie

Para acrescentar um magic-cookie � nossa lista, precisamos informar os tr�s campos: o nome do display, o tipo de autoriza��o (normalmente MIT-MAGIC-COOKIE-1), e o valor do magic-cookie, da mesma forma que aparece no comando xauth list:

$ xauth add myotherhost.example.org:0 MIT-MAGIC-COOKIE-1 8b50527c81e8af4493fb32bc36e15a6c
                        
A partir deste momento, podemos conectar nossos clientes ao servidor myotherhost.example.org:0 que a conex�o ir� ocorrer sem problemas. Por exemplo, podemos executar o seguinte comando:
$ DISPLAY=myotherhost.example.org:0 xterm &
                        
Este comando ir� abrir uma janela xterm no host remoto, permitindo ao usu�rio que estiver trabalhando com o mesmo de ter um shell com o nosso login e nossas permiss�es para poder trabalhar...

3.3 Criando magic-cookies

Normalmente, quando o login em nossa esta��o � feito no modo gr�fico, o XDM (ou outro programa que � usado para fazer o login) trata de criar um magic-cookie apropriado para nossa se��o. E em alguns sistemas o pr�prio comando starx trata de criar um magic-cookie para nossa sess�o.

Entretanto, pode ser que nosso sistema n�o est� criando o magic-cookie, pela raz�o que for. Precisamos criar um magic-cookie se queremos utilizar o xauth para o controle de acesso ao nosso display. Para isto, os seguinte comando ir� gerar um n�mero aleat�rio no Linux:

$ (head -c 16 /dev/random; date -u) | md5sum | cut -f 1 -d \
012c53f377bab5587524f79acba97cec
                        
Com o magic-cookie gerado, basta acrescentar o mesmo ao nosso .Xauthority, usando o comando xauth. O script abaixo faz tudo de uma s� vez (gera o magic-cookie e acrescenta ao .Xauthority):
#!/bin/bash

MAGIC_COOKIE=`(head -c 16 /dev/random; date -u) | md5sum | cut -f 1 -d \ `

if [ "${DISPLAY%%:*}" = "$HOSTNAME" ]
then
        MY_DISPLAY=$DISPLAY
else
        MY_DISPLAY=${HOSTNAME}${DISPLAY}
fi

xauth add $MY_DISPLAY MIT-MAGIC-COOKIE-1 $MAGIC_COOKIE 

O script acima deve funcionar na maior parte dos casos. Para fazer um teste, acrescente um echo no in�cio da linha do xauth, para ver qual o comando que ser� executado, e verifique se � exatamente o pretendido. Um ponto sens�vel � se a vari�vel $DISPLAY cont�m o hostname, mas de uma forma diferente da que est� na vari�vel $HOSTNAME (por exemplo, uma destas vari�veis cont�m o nome com o dom�nio, e a outra n�o.

3.4 Trocando Magic-Cookies

J� sabemos como criar magic-cookies e como acrescentar magic-cookies ao nosso .Xauthority. Falta apenas juntar tudo em um uso �til. O ponto cr�tico aqui � como iremos passar o magic-cookie para a outra m�quina.

Todos os artigos que eu consultei sobre o assunto para fazer este artigo sugerem o uso do rsh ou do xrsh. O exemplo dado � algo como:

$ xauth extract $DISPLAY | rsh remotehost xauht merge -
                        
Depois � s� executar um aplicativo remoto. J� que estamos usando o rsh, nada impede que usemos o mesmo para isto:
$ rsh remotehost /usr/X11R6/bin/xeyes &
                        
Enquanto o exemplo funciona perfeitamente, ele tem um problema s�rio: o uso das ``fun��es r'' (no caso, o comando rsh). Em qualquer rede moderna os assim chamados r-comandos foram banidos, por serem muito vulner�veis.

Outro comando que pode ser usado para automatizar o processo de trocar cookies e iniciar um aplicativo remoto � o xrsh. Para quem baixar o mesmo, o uso do mesmo � bastante simples. para fazer os passos acima usando apenas o xrsh, o comando �:

$ xrsh -auth xauth remoteserver /usr/X11R6/bin/xeyes
                        


Next Previous Contents
Hosted by www.Geocities.ws

1