Linux系统如何同步wtmp和/var/run/utmp?

Linux系统如何同步wtmp和/var/run/utmp?

Linux系统通常将当前用户登录信息存储在 中/var/run/utmp,将历史信息存储在 中/var/log/wtmp

那么,它们之间是如何同步信息的,

  1. 当登录发生时,它会写入这两个文件还是稍后合并它们?
  2. /var/run/utmp 不应该是持久的,并且它会在系统关闭或重新引导时丢失?

答案1

libmisc/utmp.c(对于软件包源中的 Debian login)第 301 行,注释如下setutmp()

/*
 * setutmp - Update an entry in utmp and log an entry in wtmp
 *
 *      Return 1 on failure and 0 on success.
 */

实际上/var/run/utmp首先更新,然后立即通过调用写入日志updwtmp()(如果使用PAM,则PAM写入日志)。在这两种情况下,信息都是明确写入且不同步的,因此您的第 2 点不相关。

在 Debian 系统上找到它。首先猜测谁可以编写(内核、login命令)。内核中的搜索utmpwtmp字符串没有提供太多信息。因此,请使用dpkg -S $(which login)查找包名称的来源login和 google for debian login package。这将引导您在这些源中找到编写和shadow*.tar.gz的代码。utmpwtmp

相关内容