linux user group brescia

immagine del castello

Archivio della mailing list

Who sbagliato

Maurizio Paolini paolini a dmf.unicatt.it
Ven 15 Nov 2002 16:27:21 UTC
> From: Vernia Damiano <melkor.x a tiscali.it>
>
> 	Ciao, mi domandavo come mai il comando who (ed uptime) sbagliasse
> nel dire il numero (e chi) di utenti collegati al computer. Ad esempio
> adesso di sono io e "pietro" ma il comando uptime mi dice 3 utenti (e who
> a "vernia" e "pietro" aggiunge "carli"). Siccome questo spesso mi trae in
> inganno vorrei sapere almeno da cosa puo' essere generato. Qualche idea?

I comandi who, finger, talk, write, e altri si appoggiano sul contenuto
del file /var/run/utmp, in cui sono registrati gli utenti che al momento
stanno utilizzando una qualche TTY.

Purtroppo la gestione del file "utmp" e' alquanto problematica, anche
per motivi di compatibilita' storica.  In sostanza e' ciascuna applicazione
che deve prendersi la briga di aggiornare "utmp", se e' il caso.

La situazione era semplice sui vecchi precursori unix, dove sostanzialmente
le uniche applicazioni che toccavano utmp erano "login" e "telnet", e 
suppongo poche altre.  Ma oggi la sostanza e' ben diversa, ad esempio una
sessione "xterm" crea una nuova TTY per l'utente, e quindi si registra
dentro "utmp"; lo stesso fa (o dovrebbe fare) konsole di kde, gnome-terminal
e chissa' quante altre.

Infine, con l'avvento degli ambienti desktop che potrebbero mancare del
tutto di un "xterm" (o similari) aperti, deve essere l'ambiente desktop
stesso a creare una entry in utmp (e poi deve essere in grado di gestire
correttamente le richieste di connessione sulla TTY corrispondente).

Capita a volte che una applicazione che ha correttamente creato una entry
in utmp al momento dell'attivazione, poi non la rimuova piu' (ad esempio
perche' e' stata 'killata' brutalmente), e questo e' causa dei problemi
citati.

L'unica cura che conosco e'

   cd /var/run
   rm utmp
   touch utmp
   chmod 664 utmp
   chgrp utmp utmp

Dopodiche' conviene che gli utenti connessi escano e rientrino nel sistema.

mp



Maggiori informazioni sulla lista Lug