7. Il funzionamento

Autodir utilizza i moduli per aggiungere funzionalità specifiche. Autodir implementa funzionalità generiche che i moduli sfruttano e su cui aggiungono funzioni specifiche.

Si può aggiungere solo un modulo alla volta a Autodir. Se ci sono due moduli, ad esempio autohome e autogroup, allora occorre creare due processi di Autodir in modo che ogni processo abbia un solo modulo agganciato.

Per le successive spiegazioni, utilizzerò il modulo autohome che gestisce in maniera trasparente la creazione delle directory home.

NotaPresupposti
 

  • Il modulo autohome crea le directory home degli utenti su richiesta se queste non esistono già.

  • Si assume che gli account utenti esistano ma non le relative directory home, o perché questi account sono stati creati con l'opzione -M di useradd o perché sono stati importati da LDAP, NIS o altri database esterni per i quali le directory home devono essere ancora create.

  • Si assume anche, ma solo per questa spiegazione, che tutte le directory home degli utenti debbano essere nella directory /home.

NotaKISS
 

Keep it Simple: alcuni dettagli di fino sono stati intenzionalmente tralasciati per rendere la spiegazione facile da capire.

Prima di tutto il file system autofs è montato sulla directory /home da Autodir. Il kernel di Linux viene informato che /home è gestita d'ora in avanti da una applicazione in user space, Autodir.

NotaAutofs ?
 

Non ci si deve preoccupare troppo del file system autofs se non lo si capisce. E' sufficiente considerarlo un file system speciale, simile ai file system in memoria ma con alcune proprietà speciali.


                                +----------------+
                                |  Linux Kernel  |
                                +----------------+
                                  /        \
                                 /          \
                                /            \
                               /              \
   +-------------+       +--------+       +------------+        +-----------------++-------------+       +--------+       +------------+        +-----------------+
   | Application |------>| /home  |<----->|  Autodir   |<------>| autohome module |
   +-------------+       +--------+       +------------+        +-----------------++-------------+       +--------+       +------------+        +-----------------+
                              \                                          /
                               \  +----------------+                    /
                                +-|   /autohome    |<------------------+
                                  +----------------+

Quando una applicazione o un demone richiede l'accesso alla directory home di un utente, per esempio /home/userhome1, entrano direttamente in /home/userhome1 per accedervi. Il kernel rileva l'accesso ed informa Autodir se la directory userhome1 non esiste ancora in /home.

Autodir, a sua volta, passa questa richiesta al modulo autohome. Il modulo autohome non tocca la directory /home. Invece gestisce le vere directory home da qualche altra parte, per esempio in /autohome come mostrato in figura.

Il modulo autohome crea una directory home reale se non esiste nella directory /autohome. Dopo la creazione o il fallimento del tentativo, qualunque sia il risultato, autohome informa Autodir. Quando la creazione della directory è stata completata con successo, il percorso alla directory home reale è fornito Autodir.

Se il modulo autohome riporta successo, Autodir crea la directory userhome1 sotto /home e monta la directory home reale da /autohome su di essa. Alla fine del processo, Autodir informa il kernel se l'intera operazione ha avuto successo o no. Di conseguenza, il kernel permette alle applicazioni di entrare nella directory o, in caso di fallimento, riporta che la directory non esiste.