9.4.11 Administratorrechte unter X
Wenn ein graphisches Programm mit root-Rechten gestartet werden muss, m�ssen
einige Vorkehrungen getroffen werden. Keinesfalls sollte man als Superuser
einen X-Server starten, wegen der betr�chtlichen Sicherheitsrisiken.
Man startet den X-Server als gew�hnlicher Benutzer und �ffnet ein
xterm
Fenster. Dann folgen:
$ XAUTHORITY=$HOME/.Xauthority
$ export XAUTHORITY
$ su root
Password:*****
# printtool &
Wenn man diesen Trick verwendet und sich mit su
als ein
Nicht-root-Benutzer anmeldet, muss darauf geachtet werden, dass die Datei
~/.Xauthority
f�r diesen speziellen Benutzer Gruppen-lesbar ist.
Um diesen Vorgang zu automatisieren, kann der betreffende Benutzer eine Datei
~/.xsession
anlegen, die folgende Zeilen enth�lt.
# So funktioniert X auch wenn su benutzt wurde.
if [ -z "$XAUTHORITY" ]; then
XAUTHORITY=$HOME/.Xauthority
export XAUTHORITY
fi
unset XSTARTUP
# Wenn ein besonderer Window/Sitzungsmanager gew�nscht wird
# kann der hier eingestellt werden.
#XSTARTUP=/usr/bin/blackbox
# This start x-window/session-manager program
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
# Ausf�hrung des Window/Sitzungsmanagers.
exec $XSTARTUP
Nun kann su
(nicht su -) in einem xterm
Fenster vom Benutzer gestartet werden. Auch graphische Programme, die von der
Shell mit Superuser-Rechten gestartet wurden, k�nnen nun angezeigt werden.
Dieser Trick funktioniert nur solange, wie die �bliche
/etc/X11/Xsession
ausgef�hrt wird. Wenn der Benutzer eine eigene
Datei ~/.xinit
oder ~/.xsession
Datei anlegt, muss
die oben erw�hnte Umgebungsvariable XAUTHORITY an diese Skripte
angepasst werden.
Alternativ, kann das Paket sudo
verwendet werden, um diese Sequenz
abzuarbeiten.
$ sudo xterm
... oder
$ sudo -H -s
Hier muss die /root/.bashrc
folgendes enthalten:
if [ $SUDO_USER ]; then
sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
fi
Dies funktioniert auch, wenn das Home-Verzeichnis des Benutzers mit NFS
gemountet wird, da root die Datei .Xauthority
nicht lesen muss.
There are also several specialized packages for this purpose:
kdesu
, gksu
, gksudo
,
gnome-sudo
, and xsu
. Some other methods can be used
to achieve similar results: creating a symlink from
/root/.Xauthority
to the user's corresponding one; use of the
script sux
; or putting
"xauth merge ~USER_RUNNING_X/.Xauthority" in
the root initialization script.
See more on the debian-devel
mailing list
.