9.4.11 Adquirir privilegios de superusuario en X
Si una aplicaci�n gr�fica mecesita ejecutarse con privilegios de superusuario,
use el siguiente procedimiento para visualizar la salida del programa en el
servidor X del usuario. Con objeto de evitar posibles riesgos de seguridad
nunca intente iniciar un servidor X directamente desde la cuenta de
superusuario.
Inicie el servidor X como usuario normal y abra una consola xterm
.
Then:
$ XAUTHORITY=$HOME/.Xauthority
$ export XAUTHORITY
$ su root
Password:*****
# printtool &
Cuando utilice este truco para hacer su
a un usuario normal,
aseg�rese que el archivo ~/.Xauthority
tenga permiso de lectura
para el grupo al que pertenece dicho usuario.
Para automatizar esta secuencia de comandos, cree un archivo
~/.xsession
desde la cuenta del usuario, que contenga las
siguientes l�neas:
# Esto permite arrancar X cuando hago su para ser superusuario.
if [ -z "$XAUTHORITY" ]; then
XAUTHORITY=$HOME/.Xauthority
export XAUTHORITY
fi
unset XSTARTUP
# Si desea un administrador de sesiones/ventanas particular descomente
# lo siguiente y ed�telo seg�n sus necesidades.
# XSTARTUP=/usr/bin/blackbox
# Esto inicia el administrador de sesiones/ventanas de X
if [ -z "$XSTARTUP" ]; then
if [ -x /usr/bin/x-session-manager ]; then
XSTARTUP=x-session-manager
elif [ -x /usr/bin/x-window-manager ]; then
XSTARTUP=x-window-manager
elif [ -x /usr/bin/x-terminal-emulator ]; then
XSTARTUP=x-terminal-emulator
fi
fi
# ejecuta el administrador de sesiones/ventanas seleccionado
exec $XSTARTUP
A continuaci�n ejecute su
(no su -) en una ventana
xterm
de usuario. A partir de ahora, es posible ejecutar
aplicaciones gr�ficas con privilegios de superusuario en una pantalla X de
superusuario. Este truco funciona siempre y cuando se ejecute la
/etc/X11/Xsession
predeterminada. Si un usuario personaliza
~/.xinit
o ~/.xsession
, la variable
XAUTHORITY mencionada anteriormente necesita ser inicializada de
manera similar en estos scripts.
Otro m�todo, consiste en usar sudo
para automatizar la secuencia
de comandos:
$ sudo xterm
... o
$ sudo -H -s
En este casp /root/.bashrc
debe contener:
if [ $SUDO_USER ]; then
sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
fi
Esto funciona correctamente incluso si el directorio personal del usuario se
encuentra en una partici�n NFS, ya que el superusuario no lee el archivo
.Xauthority
.
Existen tambi�n diversos paquetes espec�ficos para este fin:
kdesu
, gksu
, gksudo
,
gnome-sudo
y xsu
. Se pueden usar otro m�todos para
alcanzar resultados similares: crear un enlace simb�lico del
/root/.Xauthority
al correspondiente al usuario; utilizar el
script sux
; o incluir
"xauth merge ~USER_RUNNING_X/.Xauthority" en
el script de inicializaci�n del root.
V�ase m�s en la lista
de correos debian-devel
.