Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

Debian GNU/Linux Reference Guide
Prev Home Next

9.4.12 Diventare root in X

Se un programma con interfaccia grafica richiede l'esecuzione da root, usate le seguenti procedure per visualizzare l'output del programma sull'X server dell'utente. Non tentate mai di lanciare un X server direttamente dal root account per evitare possibili rischi dal punto di vista della sicurezza.

Lanciate l' X server come un utente normale, ed aprite una console xterm. Poi:

     $ XAUTHORITY=$HOME/.Xauthority
     $ export XAUTHORITY
     $ su root
     Password:*****
     # printtool &

Quando usate questo trucco con su verso un utente non root, assicuratevi che ~/.Xauthority sia leggibile dal gruppo di detto utente non root.

Per automatizzare questa sequenza di comandi, create un file ~/.xsession dall'accout utente che contenga le seguenti righe:

     # Questo fa funzionare X quando lancio su verso l'account root.
     if [ -z "$XAUTHORITY" ]; then
             XAUTHORITY=$HOME/.Xauthority
             export XAUTHORITY
     fi
     unset XSTARTUP
     # Se si desidera un window/session manager particolare, decommentate la riga seguente
     # e modificatela a vostro piacimento.
     #XSTARTUP=/usr/bin/blackbox
     # Questo lancia il programma x-window/session-manager
     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
     # lancia automaticamente l'X window/session manager selezionato
     exec $XSTARTUP

Poi lanciate su (non su -) in una finestra xterm dell'utente. I programmi con interfaccia grafica lanciati da questo xterm possono visualizzare l'output sull'X window dell'utente mentre girano con i privilegi di root. Il trucco funziona finch� si usa il file /etc/X11/Xsession di default. Se un utente fa le proprie modifiche tramite ~/.xinit o ~/.xsession, la variabile d'ambiente sopra descritta XAUTHORITY dovr� essere impostata allo stesso modo in questi script.

In alternativa, si pu� usare, sudo per automatizzare la sequenza di comandi:

     $ sudo xterm
     ... oppure 
     $ sudo -H -s

In questo caso /root/.bashrc dovr� contenere:

     if [ $SUDO_USER ]; then 
     sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge - 
     fi

Questo funziona bene anche se la directory home dell'utente � montata su NFS mount, poich� root non legge il file .Xauthority.

Esistono anche parecchi altri pacchetti specializzati all'uopo: kdesu, gksu, gksudo, gnome-sudo, e xsu. Altri metodi possono essere usati per raggiungere lo stesso risultato: creare un collegamento simbolico tra /root/.Xauthority ed il corrispettivo dell'utente; usare lo script sux; or mettere "xauth merge ~USER_RUNNING_X/.Xauthority" nello script di inizializzazione di root.

Vedere anche sulla lista di messaggi debian-devel.


Debian GNU/Linux Reference Guide
Prev Home Next

 
 
  Published under the terms of the GNU General Public License Design by Interspire