忍者ブログ

エンジニア初心者の備忘録

エンジニア初心者が躓いたことハマったことを公開します!

ファイルやディレクトリのタイムスタンプを変更する~エンジニア初心者のためのLinuxコマンド~

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

ファイルやディレクトリのタイムスタンプを変更する~エンジニア初心者のためのLinuxコマンド~

今回は、ファイルやディレクトリのタイムスタンプを変更するtouchコマンドについてまとめます。

まずは、マニュアルを確認。

TOUCH(1)                                                              TOUCH(1
)
名前
       touch - ファイルのアクセス時刻と修正時刻を変更する
書式
       touch [-acm][-r ref_file|-t time] file...
       今後使われなくなる書式:
       touch [-acm][ugly_time] file...
       GNU 版:
       touch    [-acfm]    [-r    file]    [-t    time]   [-d   time]
       [--time={atime,access,use,mtime,modify}] [--date=time] [--ref-
       erence=file] [--no-create] [--help] [--version] [--] file...
説明
       touch コマンドは指定したそれぞれの file のアクセス時刻、修正時
       刻またはいずれかを変更する。
       特に指定がない場合は現在時刻に変更する。 


ここで例えば、下記のオプションを利用すると、

       -d, --date=time
              現 在時刻の代わりに、 time で指定した時刻を使う。月の名
              前や、タイムゾーン、‘am’ や ‘pm’、等を含めることがで き
              る。

$ ll
-rw-r--r-- 1 hoge hoge 0 12月 15 19:07 2016 a.txt

$ touch -d "1900/4/1 00:00:00" a.txt

$ ll
-rw-r--r-- 1 hoge hoge 0  4月  1 00:00 1900 a.txt


2016年に作成したファイルを1900年に作成したことにすることが可能です。
最終アクセス時刻(atime)と最終変更時刻(mtime)が変更できたこととなります。

しかし、ここで注意が必要なのは、最終i-node更新時刻(ctime)は変更されていないということです。

$ ls -lc a.txt
-rw-r--r-- 1 hoge hoge 0  1月 30 11:49 2018 a.txt

最終i-node更新時刻(ctime)は何とか変更できる複雑な手順はあるのですが、ファイルシステムがEXT4になると変更ができないcrtimeという情報があるようです。
この辺は下記のサイトがまとまっていますので、ご参照ください。

mtime、atimeの書き換えならば容易で、これでlsコマンドで通常表示される時刻に関しては改竄が容易ですが、ctimeの書き換えになると若干複雑になります。さらにEXT4のファイルシステムではcrtimeの情報があるため、この書き換えを行うことが出来ません。ということで、セキュリティ的にはmtime、atimeの情報はあまり信用せず、ctimeないしcrtimeの情報を見た方が正確かと思います。
『ファイルのタイムスタンプを改竄する方法』

このため、作成日時を変更することは場合によっては、不可能といえるかと思います。


以上です!



【参考サイト】
『【 touch 】 ファイルのタイム・スタンプを変更する』
PR

コメント

プロフィール

HN:
プラムザ 太郎
性別:
非公開

P R