C'è un modo in Unix per scoprire chi ha avuto accesso a determinati file nell'ultima settimana? Potrebbe essere un utente o uno script che lo trasferisce in un altro posto. Posso ottenere un elenco di nomi utente che hanno avuto accesso a determinati file? Come posso scoprire chi sta accedendo a un determinato file??
Risposta accettata:
A meno che tu non disponga di politiche di registrazione estremamente insolite, chi ha avuto accesso a quale file non viene registrato (sarebbe un'enorme quantità di informazioni). Puoi scoprire chi ha effettuato l'accesso a che ora nei registri di sistema; l'last
Il comando fornisce la cronologia degli accessi e altri registri come /var/log/auth.log
ti dirà come gli utenti si sono autenticati e da dove hanno effettuato l'accesso (quale terminale o quale host se in remoto).
La data in cui un file è stato letto l'ultima volta è chiamata tempo di accesso, o in breve atime. Tutti i filesystem unix possono memorizzarlo, ma molti sistemi non lo registrano, perché ha una penalizzazione (solitamente piccola) delle prestazioni. ls -ltu /path/to/file
o stat /path/to/file
mostra il tempo di accesso al file.
Se un utente ha effettuato l'accesso al file e non stava cercando di nascondere le sue tracce, la sua cronologia della shell (ad es. ~/.bash_history
) potrebbero avere degli indizi.
Per scoprire cosa o chi ha un file aperto ora, usa lsof /path/to/file
.
Per registrare cosa accadrà a un file in futuro, ci sono alcuni modi:
-
Usa inotifywait.
inotifywait -me access /path/to
stamperà una riga/path/to/ ACCESS file
quando qualcuno leggefile
. Questa interfaccia non ti dirà chi ha avuto accesso al file; puoi chiamarelsof /path/to/file
non appena appare questa riga, ma c'è una race condition (l'accesso potrebbe essere terminato prima che lsof inizi). -
LoggedFS è un filesystem impilabile che fornisce una vista di un albero di filesystem e può eseguire registrazioni più elaborate di tutti gli accessi attraverso quella vista. Per configurarlo, vedere la sintassi del file di configurazione LoggedFS.
-
Puoi utilizzare il sottosistema di audit di Linux per registrare un gran numero di cose, inclusi gli accessi al filesystem. Assicurati che il
auditd
daemon viene avviato, quindi configura ciò che desideri registrare conauditctl
. Ogni operazione registrata viene registrata in/var/log/audit/audit.log
(su distribuzioni tipiche). Per iniziare a guardare un particolare file:auditctl -w /path/to/file
Se metti un controllo su una directory, anche i file in essa contenuti e le sue sottodirectory vengono guardati ricorsivamente.