Skip to content

Glosario

wtmpdb

El sustituto de wtmp en SQLite (wtmp.db), con una fila por sesión, horas en microsegundos y el nombre del servicio PAM; lo usan openSUSE y Debian 13.

wtmpdb es el sustituto en SQLite del archivo wtmp clásico. Los campos de hora de 32 bits de struct utmp en x86_64 se desbordan en enero de 2038, así que las distribuciones recientes guardan el historial de inicios de sesión en una base de datos: /var/lib/wtmpdb/wtmp.db en el proyecto original y en openSUSE, /var/log/wtmp.db en Debian 13. La escribe el módulo pam_wtmpdb y se lee con wtmpdb last.

Los datos están en una tabla, wtmp(ID, Type, User, Login, Logout, TTY, RemoteHost, Service). Type vale 1 para BOOT_TIME, 2 para RUNLEVEL y 3 para USER_PROCESS. Login y Logout son microsegundos desde el epoch. A diferencia de wtmp, hay una fila por sesión: la hora de cierre se rellena cuando termina la sesión, y la columna Service guarda el servicio PAM (sshd, login), algo que el formato clásico nunca tuvo.

Por qué importa en una investigación

En los hosts que han migrado, los archivos antiguos pueden faltar o haberse quedado congelados, y quien solo busca /var/log/wtmp concluye erróneamente que no hay registros de inicio de sesión. Debian 13 eliminó last, lastb y lastlog y distribuye wtmpdb y lastlog2 en paquetes aparte, así que un host actualizado puede no tener ninguna base de datos de inicios de sesión; compruébalo antes de hablar de borrado. SQLite trae además un registro de escritura anticipada: recopila el archivo wtmp.db-wal junto a la base de datos si existe, porque puede contener todavía las filas recientes. La columna Service ayuda a distinguir los inicios de sesión SSH de los de consola sin cruzar datos con auth.log.

Ejemplo

sqlite3 wtmp.db "SELECT User, TTY, RemoteHost, Service, datetime(Login/1000000,'unixepoch'), datetime(Logout/1000000,'unixepoch') FROM wtmp;"
wtmpdb last -F -f wtmp.db

Divide entre 1 000 000 antes de convertir, ya que las horas están en microsegundos. Su compañero lastlog2 (/var/lib/lastlog/lastlog2.db) usa una tabla Lastlog2(Name, Time, TTY, RemoteHost, Service) con Time en segundos.

Términos relacionados

  • wtmp y btmp: el formato binario al que sustituye.
  • lastlog: sustituido a su vez por lastlog2.
  • pam_unix: los nombres de servicio PAM que se guardan en Service.

Linux Log Parser lee wtmp.db y lastlog2.db. Consulta el análisis forense de wtmp, btmp y lastlog.