Avanti Indietro Indice

5. La lunga attesa per l'unmount

Alcuni di voi avranno dato un'occhiata ai 60 secondi di timeout, pensando: c'è troppo da aspettare per poter espellere un dischetto. Magari basterebbe fare il sync del disco ed estrarlo montato, senza che nessuno se ne accorga. Vorrei suggerire una strategia più sicura. Innanzitutto è possibile modificare il timeout. Ma istruire il sistema perché esegua l'unmount dopo solo 15 secondi, o qualsiasi altra impostazione, potrebbe risultare poco efficace. In base alla vostra configurazione, potreste essere in grado di lanciare semplicemente il comando umount come normale utente. Ma, in realtà, esiste un modo per ordinare al programma automount di eseguire l'unmount. Se inviate (tramite il programma kill) il segnale SIGUSR1 al processo automount, questo smonterà tutto ciò che potrà. Ma prima che si inizino a creare pulsanti per l'unmount sul desktop , c'è un piccolo problema.

Il processo automount è lanciato dall'utente root e accetta segnali solamente da root. Una delle ragioni per cui probabilmente si utilizza l'automunt è al contrario la possibilità di eseguire il mount e l'unmount senza essere root. Sarebbe semplice creare un programma C che esegua il "lavoro brutale" come suid-root. Comunque è possibile utilizzare sudo per permettere agli utenti di mandare l'opportuno segnale di kill. L'unico problema è che sudo non permette di utilizzare i sottocomandi di processo, che sarebbe necessario usare per individuare il PID corrente. Si dovrebbe invece disporre del programma killall, che permette di eseguire quanto segue:

ALL     ALL=NOPASSWD:/usr/bin/killall -USR1 automount
In alternativa si dovrebbe permettere agli utenti di mandare il segnale -SIGUSR1 a tutti i processi. Questo però potrebbe avere effetti collaterali su altri programmi: costringere il riciclo di alcuni window manager e forzare la chiusura di xemacs. È perciò sperabile che non ci siano buffer overrun in killall...


Avanti Indietro Indice