web-dev-qa-db-ja.com

/ var / log / wtmpが非常に大きくなるのはなぜですか? wtmpファイルを検査する方法は?

仮想コンテナ(Ubuntu Hardy)にある640MBのwtmpファイルに気づきました。

# last -n 10000 -f /var/log/wtmp.1|wc -l
384
# ls -hl /var/log/wtmp.1
-rw-rw-r-- 1 root utmp 641M 21. Sep 07:49 /var/log/wtmp.1

logrotateがインストールされていません(私はそれを実行して強制的に回転させました)。

lastによって表示されていないレコードがありますか(最後の1000エントリが表示されるはずですが、明らかに384しかありません)。

すぐにスキミングからwtmp/utmp manページ、単一のエントリで約1,6MBを使用する必要があるように見えません。

これらのファイルを検査するlast以外のプログラムはありますか?

7
blueyed

logrotateは良い考えでした。

通常のファイルと同様に、wtmpは「スパース」(lseek(2)の「ホール」および_ls -s_を参照)である可能性があり、実際にはほとんどディスクを占有しない極端なファイルサイズを示します。穴だったら、どうやってそこにたどり着いたのですか? getty(8)や友達にはバグがあった可能性があります。または、システムクラッシュとfsckの修復が原因である可能性があります。

Wtmpの生の内容を確認したい場合は、odまたはhdがバイナリをのぞくのに適しており、空の長時間実行などを表示するという嬉しい副作用があります。

再発しない限り、これ以上考えないでしょう。わずかに有能な侵入者はそれよりも良い仕事をします、内容はそれほど興味深いものではなく、それらにほとんど依存しません。

6
msw

これが役立つと思われる人を助けるために...

これらのファイルを検査するlast以外のプログラムはありますか?

はい、utmpdumpをお試しください。

$ utmpdump /var/log/wtmp
7
Chucky

Wtmpに穴があるかどうか疑わしい場合は、coreutilsが十分に新しい場合はcp --sparseで、まだリリースされていないutil-linux 2.25バージョンを使用している場合はfallocate --Dig-holesでそれらを取り除くことができます。おそらく、より実用的なアプローチはwtmpを再パックすることです。

utmpdump /var/log/wtmp | utmpdump -r > /tmp/newtmp
ls -l /var/log/wtmp /tmp/newtmp # if significantly smaller
chown root:root /tmp/newtmp
chmod 0554 /tmp/newtmp
mv /tmp/newtmp /var/log/wtmp

そして、それでもファイルがかなり大きい場合は、単に回転して圧縮します。

mv /var/log/wtmp{,.1}
gzip -9 /var/log/wtmp.1
1
kerolasa