Um problema comum que acontece com alguns Linux pode ser
descrito da seguinte forma: você quer executar um
determinado aplicativo gráfico que necessita de poderes de
superusuário, aí você abre um xterm e executa um su
-
, faz o login, e executa o comando, somente para ver
uma mensagem de erro como a abaixo:
$ su -c /usr/X11R6/bin/xeyes
Password:
Xlib: connection to "myhost.example.org:0.0" refused by server
Xlib: Client is not authorized to connect to Server
Error: Can't open display: myhost.example.org:0.0
Tudo bem, o xeyes não é um comando deste tipo, mas serve
para ilustrar o caso.
O próximo passo seria habilitar a conexão ao nosso host,
usando o xhost
:
$ xhost +localhost +myhost.example.org
localhost being added to access control list
myhost.example.org being added to access control list
Agora estamos prontos para tentar novamente o comando
anterior, que irá funcionar como pretendido.
Para um host que só tem um usuário conectado a qualquer tempo, não há problemas nesta abordagem, mas se o nosso host é ``visitado'' por outros usuários, corremos o risco de sofrer algum tipo de abuso.
A solução mais simples é instalar e configurar o
pam_xauth
. O pam_xauth
automaticamente
troca os magic-cookies entre o usuário que iniciou a sessão
e o alvo do comando su
. No exemplo acima, o
pam_xauth
automaticamente acrescenta o
magic-cookie de nossa sessão gráfica para o superusuário, e
podemos usar o cliente gráfico sem maiores problemas.
Para configurar o pam_xauth
, basta acrescentar
a seguinte linha ao arquivo /etc/pam.conf
, ou ao
arquivo /etc/pam.d/su
(se existe o diretório
/etc/pam.d
, automaticamente o arquivo
/etc/pam.conf
é ignorado, se existir):
session optional /lib/security/pam_xauth.so
su
,
nem precisamos ``abrir'' nosso servidor X com o xhost
+
e suas variações.