Come posso ottenere gli ultimi accessi / arresti / riavvii situati su un volume da un altro Mac?

0

Vorrei il comando last per visualizzare le informazioni di accesso / uscita situate su un volume da un altro Mac. Ho montato quel volume a /Volumes/1013 .

Da dove viene il last a ottenere quell'informazione? Preferirei aprire il file di registro pertinente e leggerlo direttamente di usare Terminal.

Immagine aggiunta come risposta all'utente nohillside di seguito:

Risolto da Jaume (dettagli sotto), in pratica:

sudo chroot / Volumes / 1013 / last -10

lavora per High Sierra, non ha funzionato per El Capitan, comunque molto buono.

    
posta Antonio23249 05.08.2018 - 14:22
fonte

2 risposte

3

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.

    
risposta data 10.08.2018 - 10:14
fonte
1

Secondo man last le informazioni rilevanti vengono lette dal file utmpx che (vedi man 5 utmpx ) è memorizzato in /var/run/utmpx . Quindi, se stai montando volumi da un altro Mac sulla tua rete e la /var/ gerarchia di detto Mac è accessibile tramite il punto di montaggio, troverai i dati in /Volumes/1013/var/run/utmpx . Poiché utmpx è un formato binario, dovresti scrivere il tuo piccolo programma per leggerlo (vedi man endutxent per le funzioni di accesso pertinenti).

Potresti anche provare a utilizzare l'opzione -h host di last per leggere le voci direttamente sulla rete (probabilmente è necessario abilitare l'accesso remoto, non averlo mai usato e non avere un secondo Mac in questo momento per provalo).

    
risposta data 08.08.2018 - 19:12
fonte

Leggi altre domande sui tag