¿Cómo puedo obtener los últimos inicios de sesión / paradas / reinicios ubicados en un volumen de otra Mac?

0

Me gustaría que el comando last muestre información de inicio / cierre de sesión ubicada en un volumen de otra Mac. He montado ese volumen en /Volumes/1013 .

¿De dónde obtiene last esa información? Prefiero abrir el archivo de registro relevante y leerlo directamente que usar Terminal.

Imagen agregada como respuesta al usuario en la siguiente línea:

Resuelto por Jaume (detalles a continuación), básicamente:

sudo chroot / Volumes / 1013 / last -10

funciona para High Sierra, no funcionó para El Capitán, aunque es muy bueno.

    
pregunta Antonio23249 05.08.2018 - 14:22

2 respuestas

3

last obtiene su información de /var/run/utmpx , un archivo que registra las sesiones de usuario y tty, los cierres y los reinicios en el sistema actual. utmpx es un archivo binario, lo que significa que no puede usar less o grep para leerlo o buscar palabras clave.

Para obtener la información de la sesión de la otra Mac, queremos que last lea /Volumes/1013/var/run/utmpx .

Desafortunadamente, a last no se le puede decir que lea un archivo diferente a /var/run/utmpx , pero aquí es donde chroot viene al rescate. chroot toma dos argumentos, una ruta y un comando, establece el directorio raíz percibido del comando en la ruta especificada y lo ejecuta.

En nuestro caso, este es el comando que necesitamos (escriba su contraseña de inicio de sesión cuando se le solicite):

sudo chroot /Volumes/1013/ last

Este comando cambia el directorio raíz para que apunte a /Volumes/1013 , de modo que cuando last lee /var/run/utmpx , en realidad lee /Volumes/1013/var/run/utmpx .

Puede pasar las opciones a last , si lo desea, o canalizar la salida a grep para obtener resultados más relevantes, por ejemplo:

sudo chroot /Volumes/1013/ last -10 | grep <some user>

Si el comando anterior no funciona (por ejemplo, obtienes un error de segmentación), prueba esto:

sudo chroot /Volumes/1013/ /Volumes/1013/usr/bin/last -10 | grep <some user>

es decir, ejecuta el ejecutable desde la otra Mac.

Tenga en cuenta que existe un límite en cuanto al tiempo de retroceso con la versión de macOS con cualquiera de los dos métodos.

Por ejemplo, con macOS "Sierra" 10.12, last funcionó como se esperaba, mientras que con OS X "Mavericks" 10.9, last solo imprime una línea y luego se cuelga. dtruss muestra que una grave incompatibilidad es la razón del bloqueo:

$ 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

Puede superar esta limitación conectando la unidad a una Mac que ejecute una versión anterior de macOS.

Para obtener más información sobre chroot , ejecute man chroot en la Terminal.

    
respondido por el jaume 10.08.2018 - 10:14
1

De acuerdo con man last la información relevante se lee del archivo utmpx que (vea man 5 utmpx ) se almacena en /var/run/utmpx . Entonces, si está montando volúmenes desde otra Mac en su red y se puede acceder a la jerarquía /var/ de dicha Mac a través del punto de montaje, encontrará los datos en /Volumes/1013/var/run/utmpx . Como utmpx es un formato binario, necesitarías escribir tu propio programa para leerlo (consulta man endutxent para ver las funciones de acceso relevantes).

También puedes intentar usar la opción -h host de last para leer las entradas directamente a través de la red (probablemente requiera que el inicio de sesión remoto esté habilitado, nunca hayas usado esto y no tengas una segunda Mac en este momento para inténtalo).

    
respondido por el nohillside 08.08.2018 - 19:12

Lea otras preguntas en las etiquetas