[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[port139ml:05252] Re: /procの保全



根津です。

Hideaki Ihara wrote:
> > man pageのunlink(2)によれば
> >
> > も し削除する名前がファイルへの最後のリンクだが、どれかのプロセスがその
> > ファイルをまだオープンしている場合は、そのファイルを参照している最後 の
> > フ ァイル・ディスクリプター (file descriptor) がクローズ (close) される
> > までファイルは存在し続ける。

オープンされているfdのリファレンスカウントをinode構造体で持っているからですね。
unlink()されたとき、inode構造体のopenカウントが>0だと「遅延削除」になるために
起きるものですが、ディレクトリエントリは無くなっています。

#他人にいじられたくないテンポラリファイルなんていうのを使うときによく使う手です。

> んーということは、
> 
> 1.悪意あるプロセス hoge を起動
> 2.ファイル hoge を削除
> 3.いきなり電源切断
> 
> とやっても、プロセス hoge が、ファイル hoge をオープンしていれば
> ファイルシステム上にファイル hoge は存在しているので、電源断後に
> 復元ツールを使えば基本的には復元できると考えてよいのでしょうか?

fs的には、ディレクトリエントリを持たないのに使用中がマークされているinodeという
ことで、fsckでのサルベージ対象ではあります。逆に、このようなinodeをサルベージ
できる復元ツールであれば復元は可能です。

#HDDのルートディレクトリが壊れたFATのサブディレクトリみたいなもんですから・・・。(^^ゞ

> プロセス hoge が実行中に、ファイル hoge をオープンしていない状態
> を作り出せると、ファイルを復元することができないかも、ということ
> になりそうですが。

openカウントが0であれば、inodeは即座に削除されます。
よって、ディスクブロックもinodeもフリーの状態になるので、その後になにがしか書き
込まれると自動での復元は難しいかも・・・。

-- 
------
根津 研介 日本Sambaユーザ会 / セキュリティ・スタジアム実行委員会 / (株)ファム
日本Sambaユーザ会      : http://www.samba.gr.jp
セキュリティスタジアム : http://www.security-stadium.org
 ※「Sambaファイルサービス管理リファレンス」でました!
    http://www.famm.jp/wireless/modules/weblog/details.php?blog_id=50
 ※「802.11セキュリティ」http://www.oreilly.co.jp/BOOK/80211security/
    802.11セキュリティサポートサイト: http://www.famm.jp/wireless