web-dev-qa-db-ja.com

Unixでファイルの実際の作成時間を取得する方法は?

ハック攻撃の後、Linux CLIを介して専用Webサーバーのいくつかのファイルを検査していますが、日付を変更するために 'touch'コマンドで変更されているファイルが見つかりました。これらの特定のファイルの正確なファイル作成日を取得したいと思っています。私はすでに以下を試しました

stat
ls -ld

ディスクにファイルが書き込まれた日付(作成日)が配信されなかった

また、ファイルの作成日を取得する他の方法はありますか? (ファイルがディスクに書き込んだ実際の日付)

7
inckka

あなたが探しているのは、ファイルbirthと呼ばれる* nixです。

残念ながら、ほとんどの* nixファイルシステムその情報を追跡しないでください。

If使用可能な場合、statの最新バージョンで表示されます。そうでなければ、あなたの最善の策は、バックアップからのファイル一覧と比較して(あなたはdoバックアップを持っているでしょう?)、どのファイルが追加されたかを確認します。

~$ stat .bashrc
  File: `.bashrc'
  Size: 3539            Blocks: 9          IO Block: 3584   regular file
Device: 24h/36d Inode: 204095      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ michael)   Gid: ( 1000/ michael)
Access: 2013-12-11 09:41:50.315475289 +0100
Modify: 2013-08-16 21:28:42.000000000 +0200
Change: 2013-09-14 01:55:27.167869741 +0200
 Birth: -
~$ 

ご覧のとおり、「誕生」タイムスタンプはありません。つまり、ホームディレクトリ(私の場合はZFS)に使用しているファイルシステムは、その情報を保存しないか、Linuxファイルシステムを通じて公開しません。 statが知っている方法で層。どちらの方法でも、効果はほぼ同じです。情報はありません。

上記のように、ファイルの発生時間を追跡するシステムであっても、cp --copy-contents --preserve=timestamps /dev/null /tmp/somefile && cat ./somefile >> /tmp/somefileのようなものが実質的にそのようなものをすべて無効にしても、特に驚くことはありません。そのため、出生時刻が利用できる場合でも、セキュリティ違反の影響の評価など、重要なことについてはそれらに頼るべきではありません。

取得できる最も近いほとんどのシステムでおそらくstatが表示し、ほとんどのファイルシステムが追跡するファイル変更時間またはmtimeです。ただし、お気づきのとおり、これはtouchを使用して簡単に変更できます。

10
a CVn