[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 225.   X: login grafico

X può essere avviato automaticamente, attraverso un sistema di autenticazione grafico, noto come display manager. In generale si tratta di un demone che viene configurato in modo da utilizzare una o più stazioni grafiche, locali o remote. Naturalmente, la configurazione predefinita di un sistema del genere, dovrebbe riguardare esclusivamente una sola stazione grafica locale.

È bene sottolineare che, quando si tratta di una sola stazione grafica locale, non c'è alcun bisogno di un sistema del genere e il buon vecchio script startx rimane la cosa migliore per avviare X, evitando in tal modo la presenza di un demone inutile nell'elenco dei processi elaborativi.

225.1   Configurazione generale

Nel momento in cui ci si inserisce un sistema grafico per l'autenticazione, prima dell'avvio di X, cambiano le dipendenze che ci sono tra i file di configurazione (script o porzioni di script). Pertanto, una configurazione personalizzata attraverso la modifica del file ~/.xinitrc, può rivelarsi inutile.

L'impostazione scelta da questa o quella distribuzione GNU può essere diversa e bisogna vedere i file di configurazione del sistema di autenticazione per sapere cosa succede veramente. Alcune distribuzioni GNU usano in particolare gli script /etc/X11/Xsession e ~/.Xsession (o ~/.xsession), rispettivamente per la configurazione globale e quella personalizzata di ogni utente. In questo modo, un utente che prima inseriva nel file ~/.xinitrc le istruzioni per l'avvio del proprio gestore di finestre preferito, deve usare invece il file ~/.Xsession per questo, ma nello stesso modo di prima.

Diversamente, in mancanza della configurazione corretta per l'avvio del gestore di finestre o di altro sistema del genere, dopo la fase di autenticazione, si avvia il solito servente X con un terminale e nulla altro.

#!/bin/sh
xsetroot -solid gray
xclock -digital -geometry +0-0 &
xbiff -geometry -0-0 &
exec twm

Quello che si vede sopra è il contenuto ipotetico di un file ~/.Xsession predisposto per l'avvio del gestore di finestre Twm.

225.2   Utilizzo attraverso la rete

Il programma tipico che offre le funzionalità di un display manager, è in grado di fornire anche un accesso attraverso la rete, con il protocollo XDMCP (X display manager control protocol), che utilizza la porta 177. Quello che segue è un estratto dal file /etc/services:

...
xdmcp           177/tcp                 # X Display Manager Control Protocol
xdmcp           177/udp
...

In pratica, un elaboratore remoto deve avviare un proprio servente grafico, con il quale si collega al programma presso l'elaboratore che offre il servizio XDMCP. Il programma richiede l'autenticazione e da quel momento inizia una sessione grafica che riguarda l'elaboratore che offre il servizio, anche se viene gestita materialmente dallo schermo dell'elaboratore remoto.

Per collegarsi a un servizio XDMCP, ammesso che accetti effettivamente richieste di questo tipo, si può provare presso un elaboratore da usare come terminale un comando come quello seguente:

xinit -- -query 172.21.77.253[Invio]

Oppure, direttamente così:

/usr/bin/X11/X vt7 -dpi 100 -query 172.21.77.253[Invio]

In tal caso, l'indirizzo IPv4 172.21.77.253 è proprio quello dell'elaboratore che offre il servizio XDMCP.

Figura 225.3. Esempio di utilizzo di un servizio XDMCP.

comunicazione tra servente e cliente XDMCP

225.3   Avvio

Trattandosi di un sistema di autenticazione, il programma che se ne occupa potrebbe essere avviato tramite un record appropriato nel file /etc/inittab, ma in generale si preferisce l'avvio di un demone attraverso la procedura di inizializzazione del sistema.

225.4   Xdm

Xdm(1) è il sistema di autenticazione grafica tradizionale di X, incluso anche in XFree86. In condizioni normali, i file e gli script di configurazione che lo riguardano, dovrebbero trovarsi nella directory /etc/X11/xdm/.

La configurazione predefinita dovrebbe prevedere l'apertura di una sola sessione grafica locale, escludendo l'accesso remoto.

L'avvio del demone xdm, che si occupa di controllare l'accesso e l'avvio di X, dovrebbe essere gestito da uno script della procedura di inizializzazione del sistema; per esempio /etc/init.d/xdm, o altro simile. Tuttavia, anche avviando direttamente l'eseguibile xdm, si ottiene il risultato (naturalmente lo si deve fare con i privilegi dell'utente root).

Una volta superata la fase di autenticazione in modo corretto, inizia una sessione, controllata dallo script /etc/X11/xdm/Xsession. Al termine di questo script termina la sessione e ritorna la richiesta di autenticazione per quella stazione grafica. In condizioni normali, questo script dovrebbe richiamare un altro script usato anche per altri sistemi del genere (per esempio /etc/X11/Xsession), che a sua volta dovrebbe occuparsi di avviare lo script personalizzato dell'utente (~/.Xsession o ~/.xsession).

init-+
     |
    ...
     `-xdm-+-XFree86
           `-xdm

Quello che si vede sopra è l'interdipendenza tra i processi nel momento in cui il sistema di autenticazione attende che l'utente si presenti. Si può vedere che è necessaria la presenza del servente X e in particolare si può poi osservare che tutto funziona con i privilegi dell'utente root.

init-+
     |
    ...
     `-xdm-+-XFree86
           `-xdm---twm

Nel momento in cui si supera la fase dell'autenticazione, vengono avviati i processi richiesti dallo script /etc/X11/xdm/Xsession e dagli altri che questo richiama (per esempio ~/.Xsession). In questo caso, come si vede nel riquadro precedente, si tratta del gestore di finestre Twm. Naturalmente, i processi avviati a partire dallo script /etc/X11/xdm/Xsession hanno i privilegi dell'utente che esegue l'autenticazione.

Il file di configurazione /etc/X11/xdm/xdm-config contiene l'elenco degli altri file utilizzati e di altre opzioni:

DisplayManager.errorLogFile:    /var/log/xdm.log
DisplayManager.pidFile:         /var/run/xdm.pid
DisplayManager.keyFile:         /usr/lib/X11/xdm/xdm-keys
DisplayManager.servers:         /usr/lib/X11/xdm/Xservers
DisplayManager.accessFile:      /usr/lib/X11/xdm/Xaccess
DisplayManager.authDir:         /var/lib/xdm
DisplayManager.willing:         su nobody -c /usr/lib/X11/xdm/Xwilling
! All displays should use authorization, but we cannot be sure X terminals
! will be configured to support it, so those that do not will require
! individual resource settings.
DisplayManager*authorize:       true
! Scripts to start the server, start the user session, and reset the server
DisplayManager*setup:           /usr/lib/X11/xdm/Xsetup
DisplayManager*startup:         /usr/lib/X11/xdm/Xstartup
DisplayManager*reset:           /usr/lib/X11/xdm/Xreset
DisplayManager*resources:       /usr/lib/X11/xdm/Xresources
DisplayManager*session:         /usr/lib/X11/xdm/Xsession
DisplayManager*authComplain:    true
DisplayManager*userPath:        /usr/local/bin:/usr/bin:/bin:\
  \/usr/bin/X11:/usr/games DisplayManager*systemPath: /usr/local/sbin:/usr/local/bin:\
  \/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 ! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0

Nell'esempio merita molta attenzione l'ultima direttiva: la sua presenza fa sì che venga a mancare il servizio XDMCP, pertanto i tentativi di collegamento verrebbero rifiutati. Per attivare il servizio, occorre commentare, o eliminare la direttiva:

...
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
# DisplayManager.requestPort:   0

Secondo l'esempio mostrato, il file /etc/X11/xdm/Xservers permette di controllare l'avvio locale del servizio di autenticazione grafica. L'esempio seguente apre una sola sessione che deve collocarsi nella settima console virtuale:

...
:0 local /usr/bin/X11/X vt7 -dpi 100 -nolisten tcp

Per avere due sessioni, una nella settima console, l'altra nell'ottava:

...
:0 local /usr/bin/X11/X vt7 -dpi 100 -nolisten tcp
:1 local /usr/bin/X11/X vt8 -dpi 100 -nolisten tcp

Naturalmente, Xdm può servire anche solo per le connessioni remote, attraverso la rete, pertanto si può benissimo disattivare l'accesso locale, commentando le direttive di questo file.

Nella configurazione di Xdm c'è un altro file importante da considerare, che secondo la configurazione già vista è /etc/X11/xdm/Xaccess. Questo file serve a delimitare l'accessibilità del servizio XDMCP offerto. La direttiva dell'esempio seguente abilita l'accesso a qualunque indirizzo:

...
#
# Any host can get a login window:
#
*
...

225.5   Gdm

Gdm (2) è un altro sistema di autenticazione grafica conforme al gestore di sessione Gnome. Il principio di funzionamento è lo stesso di Xdm, dove in particolare è possibile scegliere di avviare sessioni differenti, che fanno riferimento a script diversi.

La configurazione e gli script di Gdm si trovano a partire dalla directory /etc/X11/gdm/; in particolare, gli script che consentono di selezionare delle sessioni diverse si trovano nella directory /etc/X11/gdm/Sessions/. Uno di questi dovrebbe fare riferimento allo script /etc/X11/Xsession, il quale a sua volta si prende cura di avviare anche lo script personalizzato dell'utente (~/.Xsession o simile).

Una volta completata la fase di autenticazione, la dipendenza dei processi attivi potrebbe presentarsi in questo modo:

init-+
     |
    ...
     `-gdm---gdm-+-Xorg
                 `-twm-+-ssh-agent
                       `-xclock

Per la precisione, i processi avviati dagli script di sessione si trovano ad avere i privilegi dell'utente che si è autenticato, mentre il resto funziona con i privilegi dell'utente root.

Gdm è realizzato particolarmente per essere usato con il gestore di sessione Gnome; in tal caso, al posto di un gestore di finestre, viene avviato l'eseguibile gnome-session, che a sua volta controlla un gestore di finestre, in base alla configurazione.

In condizioni particolari, Gdm si rifiuta di avviare la richiesta di autenticazione; ciò, in particolare, se manca la possibilità di verificare la presenza di un elaboratore corrispondente al nome restituito da hostname. Per esempio, l'indicazione corretta del nome, senza il dominio di appartenenza e senza una direttiva search appropriata nel file /etc/resolv.conf, può provocare questo tipo di problema.

225.6   Kdm

Kdm (3) è un altro sistema simile a Xdm, con l'aggiunta della possibilità di selezionare delle sessioni differenti, come avviene per Gdm. La sua origine richiama il gestore di sessione KDE e i suoi file di configurazione potrebbero risiedere in /etc/kde2/kdm/, oppure in /etc/X11/kdm/. A ogni modo, la struttura di questi file e di questi script è molto simile a quella usata da Xdm; anche in questo caso, il file kdm/Xsession dovrebbe rimandare allo script standard /etc/X11/Xsession, il quale a sua volta dovrebbe utilizzare lo script personale degli utenti (~/.Xsession o ~/.xsession).

225.7   Wdm

Wdm (4) è un lavoro derivato da Xdm, i cui file di configurazione e gli script principali si collocano normalmente nella directory /etc/X11/wdm/. Anche in questo caso è disponibile la possibilità di avviare sessioni differenti.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) X   MIT più altre licenze per porzioni particolari di codice

2) Gdm   GNU GPL

3) KDE   GNU GPL, GNU LGPL e altre licenze a seconda della porzione di codice

4) Wdm   GNU GPL con l'aggiunta della licenza specifica di Xdm


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome x_login_grafico.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!