如何清除最后-10信息?

如何清除最后-10信息?

如何仅针对Linux系统清除最后-10信息?我尝试执行命令> /var/log/wtmp来清除最后的信息,但它清除了整个登录信息,但我只需要清除最后的-10登录信息。

答案1

wtmp 文件是一个struct utmp记录序列。要删除最后 10 条记录,首先要发现 utmp 记录的大小,然后将 wtmp 文件截断为其当前大小减去 utmp 记录大小的十倍。

一个简单的 C 程序将为您提供 utmp 记录的大小。

#include <utmp.h>
#include <stdio.h>

struct utmp foo;

main()
{
    printf("%lu\n", sizeof foo);
    return 0;
}

Perl 脚本将截断 wtmp 文件

$utmp_size = utmp_record_size_goes_here;
$wtmp_file = "wtmp filename goes here";
open WTMP, "+<", $wtmp_file or die "$wtmp_file: ", $!;
seek WTMP, -10 * $utmp_size, 2;
truncate WTMP, tell(WTMP);
close WTMP;

相关内容