Linuxシステムでのみ最後の-10情報を消去する方法は?最後の情報を消去するコマンドを実行しましたが、> /var/log/wtmp
ログイン情報全体を消去します。最後の-10ログイン情報のみを消去する必要があります。
答え1
wtmp ファイルはstruct utmp
一連のレコードです。最後の 10 個のレコードを削除するには、まず utmp レコードのサイズを確認してから、wtmp ファイルを現在のサイズから utmp レコードのサイズの 10 倍を引いたサイズに切り捨てます。
単純な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;