4 votos

¿Fichero de registro al que accede `sudo last`?

El comando bash last (necesita sudo) imprime logs, que contienen información sobre cuando los diferentes usuarios entran/salen del shell.

He estado buscando el archivo que almacena esta información, que last accedería. He comprobado /var/log/system.log y otros archivos dentro de /var/log .

También he buscado por todas partes en Internet y no encuentro la ubicación.

Sin embargo, he confirmado que el archivo está dentro de /var/log porque cuando lo hice rm -rf /var/log/ , sudo last mostró una salida vacía hasta la siguiente vez que me conecté.

¿Qué archivo es? Gracias.

(Estoy usando OS X Mavericks, por si sirve de algo).

3voto

Douglas Puntos 10417

El archivo (ejecutable) en cuestión es /var/run/syslog

Si ejecutamos man last obtenemos

SEE ALSO
     lastcomm(1), utmpx(5), ac(8)

Podemos encontrar utmpx en el /var/run directory Utmpx es una base de datos contable de usuarios de actual información de acceso. La clave aquí es esta declaración que se encuentra en el man página para utmpx

Tradicionalmente, se utilizaban archivos separados para almacenar el registro en ejecución de las entradas y salidas (wtmpx), y el último inicio de sesión de cada usuario (lastlogx). Con la disponibilidad de la utilidad de registro del sistema de Apple asl(3), estos archivos separados pueden sustituirse por entradas de registro, que se generan automáticamente cuando utmpx.

Así que.., utmpx está generando entradas de registro en la función syslog de OS X. Ejecute el siguiente comando:

syslog | grep 'login\['

Y obtendrá una lista de todos los eventos de inicio de sesión desde que se instaló el SO (truncada)

May 26 17:03:12 Allans-iMac login[5572] <Notice>: USER_PROCESS: 5572 ttys003
May 26 17:26:15 Allans-iMac login[5572] <Notice>: DEAD_PROCESS: 5572 ttys003
May 27 10:10:57 Allans-iMac login[5196] <Notice>: DEAD_PROCESS: 5196 ttys002
May 27 10:10:58 Allans-iMac login[4741] <Notice>: DEAD_PROCESS: 4741 ttys001
May 27 10:11:18 Allans-iMac login[6253] <Notice>: USER_PROCESS: 6253 ttys001
May 27 10:25:45 Allans-iMac login[6281] <Notice>: USER_PROCESS: 6281 ttys002
May 27 17:17:15 Allans-iMac login[6281] <Notice>: DEAD_PROCESS: 6281 ttys002
May 27 17:17:21 Allans-iMac login[6253] <Notice>: DEAD_PROCESS: 6253 ttys001
May 28 13:40:06 Allans-iMac login[7123] <Notice>: USER_PROCESS: 7123 ttys001
May 30 09:11:25 Allans-iMac login[1213] <Notice>: USER_PROCESS: 1213 ttys000
May 30 09:11:25 Allans-iMac login[1220] <Notice>: USER_PROCESS: 1220 ttys001
May 30 09:23:19 Allans-iMac login[1220] <Notice>: DEAD_PROCESS: 1220 ttys001
May 30 09:23:19 Allans-iMac login[1213] <Notice>: DEAD_PROCESS: 1213 ttys000
May 30 20:57:16 Allans-iMac login[1695] <Notice>: USER_PROCESS: 1695 ttys000
May 30 20:57:39 Allans-iMac login[1695] <Notice>: DEAD_PROCESS: 1695 ttys000
May 31 22:33:30 Allans-iMac login[2592] <Notice>: USER_PROCESS: 2592 ttys000
Jun  3 16:46:28 Allans-iMac login[2592] <Notice>: DEAD_PROCESS: 2592 ttys000
Jun  4 20:44:43 Allans-iMac login[1789] <Notice>: USER_PROCESS: 1789 ttys000

Para obtener información adicional sobre la contabilidad de usuarios, podemos utilizar el comando ac

Ejecutar man ac nos da

    NAME
     ac -- display connect-time accounting

SYNOPSIS
     ac [-d] [-p] [-w file] [users ...]

DESCRIPTION
     A record of individual login and logout times are written to the system log by login(8) and launchd(8),
     respectively.  The program ac examines these records and writes the accumulated connect time (in deci-
     mal hours) for all logins to the standard output.

Así, según man ac la información de inicio de sesión se escribe en el registro del sistema. Ejecución de ac nos da "Si no se dan argumentos, ac muestra la cantidad total de tiempo de inicio de sesión para todas las cuentas activas en el sistema".

$ ac
total     2477.23

Para desglosarlo por usuario:

$ ac -p
testguy      0.04
_mbsetupuser     0.39
allan     2476.74
root         0.07
total     2477.24

0 votos

En system.log almacena la información de inicio de sesión, no estoy seguro de si se accede a ella mediante last porque al eliminar el archivo, el last la salida persiste. ¿Ocurre lo mismo en tu ordenador?

0 votos

No es el system.log es syslog

0 votos

@Allan Siento haber sido demasiado duro. No vi la parte del syslog porque no refresqué bien tu respuesta.

1voto

klanomath Puntos 19587

last obtiene sus resultados examinando los archivos *.launchd.events.*.stats en /private/var/log/com.apple.launchd .

La eliminación de los archivos suele restringir el last salida al último inicio de sesión después de reiniciar. En consecuencia, debe existir algún archivo/base de datos/estructura en memoria adicional.

Eliminar los archivos no funciona de forma consistente.

Los archivos de estadísticas de las respectivas carpetas de usuario (por ejemplo, com.apple.launchd.peruser.0 o com.apple.launchd.peruser.501) son irrelevantes.

0 votos

Hmm... ¿conoces su formato?

1 votos

¿No debería ser /private/var/log/com.apple.xpc.launchd/ ? ¿O esto ha cambiado más recientemente?

0 votos

@thepiercingarrow Echa un vistazo a utmpx.h para que un montón de funciones accedan a él. O en http://opensource.apple.com/source/adv_cmds/adv_cmds-163/las‌​t/last.c directamente :-)

1voto

Rich Puntos 2429

last está utilizando /var/log/asl/* archivos.

Disparar dentro de un Terminal ventana:

/usr/bin/sudo opensnoop

y en otro:

last

se lo mostrará en detalle.

Si quieres leerlo de la fuente, aquí lo tienes:

http://opensource.apple.com/release/os-x-1011/

descargar:

Libc-1081.1.3

extraiga este archivo tar comprimido:

tar fjx Libc-1081.1.3.tar.gz

y leer:

Libc-1081.1.3/gen/utmpx-darwin.c

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X