In ogni sistema operativo multiutente c'è la necessità di controllare gli accessi, attraverso un sistema di registrazione degli utenti, e degli eventi, attraverso un sistema di log. Nei sistemi Unix un utente che può accedere ha un account: letteralmente, un conto.
La tabella (seguente) elenca i programmi e i file a cui si accenna in questo capitolo.
Il log di sistema, o syslog, è la procedura di registrazione degli eventi importanti all'interno di un cosiddetto file di log. Questo sistema è gestito principalmente dal daemon syslogd. Altri programmi o daemon possono aggiungere annotazioni al log inviando messaggi a syslogd.
syslogd [<opzioni>]
È il daemon che si occupa della registrazione del log di sistema. Di norma viene avviato durante la fase si inizializzazione del sistema (init). Utilizza un file di configurazione che se non specificato diversamente è /etc/syslog.conf. Questo file viene letto nel momento in cui syslogd si avvia e per fare in modo che venga riletto (per esempio dopo una modifica), occorre inviare a syslogd un segnale di aggancio (SIGHUP).
kill
-
HUP <PID-di-syslogd>
-
f <file-di-configurazione>
Specifica un file di configurazione diverso da quello predefinito.
-
m <minuti>
Stabilisce l'intervallo espresso in minuti tra i messaggi di marcatura. Il valore predefinito è 20.
-
p <log-socket>
Specifica un log socket diverso da quello predefinito che è /dev/log.
È il file di configurazione utilizzato da syslogd per definire in che modo devono essere gestiti i messaggi del sistema di log. Se si vogliono apportare modifiche a questo file, è poi necessario fare in modo che venga riletto da syslogd. Per fare questo è possibile mandare a syslogd il segnale SIGHUP:
kill
-
HUP <PID-di-syslogd>
Il modo più semplice di gestire questi messaggi è quello di inserirli in un file di log, come per esempio nel modo seguente.
*.* /var/log/syslog
I messaggi possono essere suddivisi in file differenti a seconda del tipo.
*.=info;*.=notice /var/log/messages
*.=debug /var/log/debug
*.warn /var/log/syslog
Oppure, possono anche essere diretti ad altri computer host, a un terminale, ... Per conoscere in quanti modi si può gestire la configurazione di questo file, conviene consultare la documentazione interna: syslog.conf(5).
Se si utilizza un sistema di registrazione degli eventi su file, come potrebbe essere utilizzando il consueto file /var/log/syslog, per azzerarne il contenuto, è possibile copiare il file /dev/null su di esso:
#
cp /dev/null /var/log/syslog
logger [<opzioni>] [<messaggio>]
Permette di aggiungere delle annotazioni all'interno
del log di sistema.
Se non vengono forniti argomenti,
il messaggio da registrare viene atteso dallo
standard input.
Se si utilizza la tastiera, per concludere è necessario
utilizzare il carattere di
-
f <file>
Permette di includere il file indicato all'interno del log di sistema.
klogd [<opzioni>]
È il daemon specifico di Linux per l'intercettazione e la registrazione dei messaggi del kernel. Di norma viene avviato dalla procedura di inizializzazione del sistema, subito dopo syslogd.
-
f <file-di-log>
Specifica un file di log particolare invece di dirigere i messaggi direttamente al daemon della gestione del log di sistema, cioè syslogd.
Il login è la procedura attraverso la quale un utente, precedentemente registrato, viene riconosciuto e gli viene concesso di utilizzare il sistema. Il concetto del login è simile a quello di una firma di ingresso.
Quando un utente conclude la sua attività con il sistema, esegue un logout. Il concetto del logout è simile a quello di una firma di uscita.
login [<utente>]
Permette l'accesso dell'utente al sistema. Se si dispone di più di un account, lo si può utilizzare durante una sessione di lavoro, per accedere temporaneamente in modo diverso ed essere identificati diversamente.
Di solito non si usa direttamente: è compito del programma di gestione del terminale, getty o simili, di avviarlo e fare quindi in modo che la prima cosa che appare sullo schermo sia la richiesta del login.
Ogni utente registrato nel sistema, cioè per il quale è stato previsto un account, ha una directory home, all'interno della quale si trova posizionato al momento dell'accesso. Questa directory contiene dei file riguardanti la particolare configurazione dell'utente a cui appartiene. La directory home è collocata in /home/<nome-utente> e questa viene normalmente abbreviata utilizzando il simbolo ~ (tilde). La directory home dell'utente root è speciale e si trova in /root. Durante un accesso normale da parte di un qualunque utente, compreso root, vengono richiesti il nome dell'utente (se non era già stato fornito nella riga di comando) e la password. Quindi vengono visualizzati:
Se si tratta di un utente al quale è associata una password, questa viene richiesta e controllata. Se risulta errata, vengono consentiti un massimo di dieci tentativi. Tutti gli errori sono riportati all'interno del log di sistema. Se l'utente che chiede di accedere non è root, e se esiste il file /etc/nologin, ne viene visualizzato il contenuto sullo schermo e non viene consentito l'accesso. Ciò serve per impedire l'accesso al sistema, tipicamente quando lo si intende chiudere. Perché l'accesso possa essere effettuato come utente root, occorre che il terminale (tty) da cui si intende accedere sia elencato all'interno di /etc/securetty. I tentativi di questo tipo, che provengono da terminali non ammessi, vengono registrati all'interno del log di sistema. Se esiste il file ~/.hushlogin, viene eseguito un accesso silenzioso, nel senso che vengono disattivati:
Se esiste il file /var/log/lastlog, viene visualizzata la data e l'ora dell'ultimo accesso e ne viene registrato quello in corso. Al termine della procedura di accesso viene avviata la shell dell'utente. Se all'interno del file /etc/passwd, non è indicata la shell da associare all'utente che accede, viene utilizzato /bin/sh. Se all'interno del file /etc/passwd non è indicata la directory home dell'utente, viene utilizzata la directory / (la radice).
È un elenco di utenti, password, directory home, shell e altre informazioni personali utilizzate da finger ( finger). La struttura dei record (righe) di questo file è molto semplice.
<utente>:<password>:<UID>:<GID>:<dati-personali>:<directory-home>:<shell>
<!> Per impedire l'accesso a un utente attraverso la procedura di login, è sufficiente modificare parzialmente il campo della password, per esempio con l'aggiunta di un asterisco.
È l'elenco dei gruppi di utenti. La struttura delle righe di questo file è molto semplice.
<gruppo>:<password>:<GID>:<lista-di-utenti>
Il file /etc/shadow appare in quei sistemi in cui è attivata la gestione delle shadow password. Serve a contenere le password cifrate, togliendole dal file /etc/passwd. Facendo in questo modo, è possibile inibire la maggior parte dei permessi di accesso a questo file, proteggendo le password. Al contrario, non è possibile impedire l'accesso in lettura del file /etc/passwd che fornisce una quantità di informazioni sugli utenti, indispensabili a molti programmi.
È il file che contiene l'elenco degli accessi in essere nel sistema. Non è un normale file di testo e per l'estrazione delle informazioni in esso contenute si usano utility apposite. È possibile tuttavia che siano di più gli utenti effettivamente presenti nel sistema e ciò a causa del fatto che non tutti i programmi usano il metodo di registrazione fornito attraverso questo file.
Se questo file non esiste, conviene crearlo manualmente in uno dei due modi seguenti.
#
cp /dev/null /var/run/utmp
#
touch /var/run/utmp
Il file wtmp ha una struttura analoga a quella di /var/log/utmp e serve per conservare la registrazione degli accessi e della fine di questi (login-logout). Questo file non viene creato automaticamente; se manca, la conservazione delle registrazioni all'interno del sistema non viene effettuata. Viene aggiornato da login e da init.
Il formato di questo file non è quello di un normale file di testo, quindi non è leggibile o stampabile direttamente.
Se questo file non esiste, conviene crearlo manualmente in uno dei due modi seguenti.
#
cp /dev/null /var/log/wtmp
#
touch /var/log/wtmp
Il contenuto di questo file viene visualizzato da login al termine della procedura di login, prima dell'avvio della shell associata all'utente. Questo file contiene, o dovrebbe contenere, il cosiddetto ``messaggio del giorno''.
Se esiste questo file, login non accetta nuovi accessi al sistema, e a ogni tentativo visualizza il suo contenuto.
Se si desidera chiudere il sistema è possibile creare questo file scrivendoci all'interno il motivo, o una breve spiegazione di quello che sta avvenendo.
Contiene l'elenco dei terminali ``sicuri'', cioè di quelli da cui si permette l'accesso come utente root. I nomi dei terminali vengono scritti senza indicare il prefisso /dev/. L'esempio seguente mostra un elenco di terminali che comprende la console, le sei console virtuali, quattro terminali seriali e quattro terminali che accedono dalla rete locale, oppure da X Window System.
console
tty1
tty2
tty3
tty4
tty5
tty6
ttyS0
ttyS1
ttyS2
ttyS3
ttyp0
ttyp1
ttyp2
ttyp3
Il file corrispondete al nome dell'utente, contenuto in /var/spool/mail/, viene usato per accumulare la posta a lui diretta.
Il programma login, dopo la visualizzazione del messaggio contenuto in /etc/motd, se trova che c'è posta per l'utente, visualizza un messaggio di avvertimento in tal senso.
Se esiste il file .hushlogin all'interno della directory home di un certo utente, quando quell'utente accede, login non visualizza alcun messaggio introduttivo.
Il file /var/log/lastlog, se esiste, viene utilizzato da login per registrare gli ultimi accessi al sistema e per poter visualizzare la data e l'ora dell'ultimo accesso, a ogni login.
Se questo file non esiste, conviene crearlo manualmente in uno dei due modi seguenti.
#
cp /dev/null /var/log/lastlog
#
touch /var/log/lastlog
Alcuni programmi consentono di ottenere i privilegi di un altro utente, come se si eseguisse un altro login. In alcuni sistemi, questo rappresenta un problema di sicurezza, quando da un terminale che non viene considerato sicuro e quindi non incluso nell'elenco di /etc/securetty, si riesce a ottenere l'accesso come root.
su [<opzioni>] [<utente>]
su permette a un utente di diventare temporaneamente un altro. Avvia una shell con UID e GID reale ed efficace. Se non viene indicato un utente, su sottintende root. Prima di attivare la nuova shell, viene richiesta la password associata all'utente selezionato, a meno che su non sia stato eseguito da chi sta già accedendo come root.
newgrp [<gruppo>]
Permette di cambiare il gruppo a cui appartiene l'utente. L'utente non cambia, la directory home nemmeno, cambia solo il GID. Un utente può cambiare gruppo solo se nel file /etc/group sono diversi i gruppi a cui può appartenere l'utente.
In alcuni sistemi Unix non è possibile cambiare gruppo se quel gruppo non ha una password.
Molti programmi permettono di avere informazioni sugli accessi e di conseguenza anche sugli utenti. In particolare sono importanti quelli che permettono di leggere il contenuto dei file /var/run/utmp e /var/log/wtmp il cui formato non è leggibile attraverso l'uso di un semplice cat.
Queste notizie possono essere utili anche per la preparazione di script, per esempio quando c'è la necessità di verificare se questo viene avviato dall'utente root o da un altro.
last [<opzioni>] [<nome>... ]
Visualizza il contenuto del file di log degli accessi (login) e disconnessioni (logout) per le informazioni riguardanti gli utenti e/o i terminali. Il file dal quale queste informazioni vengono attinte è /var/log/wtmp.
-
<numero> | -
n <numero>
Limita il numero di elementi visualizzati allo specifico valore numerico indicato.
$
last
Visualizza gli ultimi eventi del log degli accessi.
$
last pippo root
Visualizza gli accessi e disconnessioni da parte degli utenti pippo e root.
users [<file>]
Visualizza i nomi degli utenti che accedono attualmente al computer host corrente. Se un utente ha attivato più sessioni, il suo nome apparirà più volte nell'elenco. Se il comando viene avviato senza l'indicazione di un file, i dati visualizzati vengono estratti da /etc/utmp. Una possibilità comune è quella di visualizzare attraverso users il contenuto di /etc/wtmp.
w [<opzioni>] [<utente>]
Visualizza i nomi degli utenti che accedono attualmente e varie informazioni sulla loro attività.
who [<opzioni>]
[<file>] [am i]
Visualizza i nomi degli utenti che accedono attualmente e varie informazioni sulla loro attività. who trae normalmente le sue informazioni dal file /etc/utmp, a meno che non venga indicato un altro file (per esempio /etc/wtmp).
Vedere info who oppure who(1).
whoami
Visualizza il nome dell'utente associato con l'attuale
UID efficace.
È equivalente a id -
un.
logname
Emette il nome dell'utente, così come appare dal file /var/run/utmp.
1997.10.26 - Scritto da Daniele Giacomini daniele@calion.com (vedi copyright: Appunti Linux).