last
riceve le informazioni da /var/run/utmpx
, un file che registra sessioni utente, tty, arresti e riavvii sul sistema corrente. utmpx
è un file binario, il che significa che non puoi utilizzare less
o grep
per leggerlo o cercare parole chiave.
Quindi per ottenere le informazioni sulla sessione dell'altro Mac, vogliamo last
leggere /Volumes/1013/var/run/utmpx
.
Sfortunatamente, last
non può essere detto di leggere un file diverso da /var/run/utmpx
, ma questo è dove chroot
arriva in soccorso. chroot
prende due argomenti, un percorso e un comando, imposta la directory radice percepita del comando sul percorso specificato e la esegue.
Nel nostro caso, questo è il comando di cui abbiamo bisogno (digitare la password di login quando richiesto):
sudo chroot /Volumes/1013/ last
Questo comando cambia la directory root in modo che punti a /Volumes/1013
in modo che quando last
legge /var/run/utmpx
, in realtà legge /Volumes/1013/var/run/utmpx
.
Puoi passare le opzioni a last
, se lo desideri, oppure reindirizzare l'output a grep
per risultati più pertinenti, ad esempio:
sudo chroot /Volumes/1013/ last -10 | grep <some user>
Se il comando precedente non funziona (ad esempio, si verifica un errore di segmentazione), prova questo:
sudo chroot /Volumes/1013/ /Volumes/1013/usr/bin/last -10 | grep <some user>
cioè, esegui l'eseguibile dall'altro Mac.
Si noti che esiste un limite per quanto si può andare indietro con la versione macOS con entrambi i metodi.
Ad esempio, con macOS "Sierra" 10.12, last
ha funzionato come previsto, mentre con OS X "Mavericks" 10.9, last
stampa solo una riga e quindi si blocca. dtruss
mostra che una grave incompatibilità è il motivo del blocco:
$ sudo dtruss -p 39542
dtrace: system integrity protection is on, some features will not be available
SYSCALL(args) = return
dtrace: 3870 dynamic variable drops with non-empty dirty list
lseek(0x8, 0x4000, 0x0) = 16384 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #12 at DIF offset 68
Puoi superare questa limitazione collegando l'unità a un Mac con una versione precedente di macOS.
Per ulteriori informazioni su chroot
, esegui man chroot
in Terminale.