9.4.12 Devenir root sous X
Si une application graphique a besoin d'�tre lanc�e avec les privil�ges de
root, utilisez les proc�dures suivantes pour le faire � partir du serveur X
d'un utilisateur. N'essayez jamais de d�marrer un serveur X depuis le compte
root, pour vous garder d'�ventuels risques de s�curit�.
D�marrez le serveur X avec un utilisateur normal et ouvrez un
xterm
. Ensuite :
$ XAUTHORITY=$HOME/.Xauthority
$ export XAUTHORITY
$ su root
Password:*****
# printtool &
Lorsque vous utilisez cette astuce pour effectuer un su
vers un
utilisateur non root, faites attention � ce que le fichier
~/.Xauthority
soit lisible par le groupe de cet utilisateur.
Cette s�quence de commandes peut �tre automatis�e en cr�ant un fichier
~/.xsession
sur le compte de l'utilisateur, avec les lignes
suivantes :
# Cela permet que X marche quand je fais un su pour devenir root
if [ -z "$XAUTHORITY" ]; then
XAUTHORITY=$HOME/.Xauthority
export XAUTHORITY
fi
unset XSTARTUP
# Si vous d�sirez un gestionnaire de fen�tres/session particulier,
# d�commentez les lignes suivantes et �ditez-les
#XSTARTUP=/usr/bin/blackbox
# D�marre le programme de gestion de fen�tres/session
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
# ex�cute le gestionnaire de fen�tres/session s�lectionn�
exec $XSTARTUP
Ensuite, ex�cutez su
(pas su -) dans une fen�tre
xterm
de l'utilisateur. Maintenant vous pouvez ex�cuter des
applications graphiques avec les privil�ges de root sur l'�cran X d'un
utilisateur normal. Cette astuce fonctionne tant que le Xsession par d�faut
est utilis�. Si un utilisateur personnalise ~/.xinit
ou
~/.xsession
, la variable d'environnement XAUTHORITY
mentionn�e ci-dessus doit �tre positionn�e de la m�me fa�on dans ces scripts.
Une autre m�thode est d'utiliser le paquet sudo
:
$ sudo xterm
... ou
$ sudo -H -s
Ici le fichier /root/.bashrc
doit contenir :
if [ $SUDO_USER ]; then
sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
fi
Cela marche bien m�me si le r�pertoire home de l'utilisateur est sur une
partition NFS, puisque root ne lit pas le fichier .Xauthority
.
Il existe aussi des paquets sp�cialis�s dans ce but : kdesu
,
gksu
, gksudo
, gnome-sudo
, et
xsu
. Enfin, trois autres m�thodes peuvent �tre utilis�es pour
atteindre des r�sultats similaires : cr�er un lien symbolique depuis
/root/.Xauthority
vers celui de l'utilisateur ; utiliser le
script
\|[quot
]\|sux\|[quot ]\|
; ou mettre xauth merge
~USER_RUNNING_X/.Xauthority dans le script d'initialisation
de root.
Plus d'informations sur la liste
de diffusion debian-devel
.