Linuxを扱っていると時々遭遇するのがtext
のような拡張子のないファイル。
拡張子の役割はアプリがなんのファイルであるか判別する目印のようなものなので、これがないとなんのアプリで使うファイルかを人が判別できないということにもなってしまいます。
一体何なんだこのファイルは?という疑問を解消するコマンドがfile
コマンドです。
前回学んだLinux基礎コマンド
touchコマンドってファイル作成コマンドと思い込んでいました
こんにちは、AWSが面白いので基礎となるLinuxを学び直しているねこだくさんです。今回はファイルを作成するときになんとなく使っているtouchコマンドについて学びます。コマンド操作についてはいつもの通りEnvaderで実行しています。...
fileコマンドとは
file ファイル名
とコマンドを打つことででそのファイルの情報が出力されます。
めちゃくちゃ細かいことを言うと
- ファイルシステムテスト
- マジックナンバーテスト
- 言語テスト
という順番で判定を行い最初に該当したものを表示する仕組みなのだそうです。意味がわかりませんね。
ファイルの種類
大きく分けて2つあります。
- 人が読めるtextファイル
- 人にはほぼ読めないバイナリファイル
fileコマンドでは該当のファイルが
- テキストファイルかどうか
- 実行可能ファイルか
- それ以外のバイナリファイルなどか
を知ることができます。
使い方
ここからはEnvaderの仮想環境を使います。
まずは普通にtext.txtの中身を見てみましょう。file ファイル名
です。
file text.txt
text.txt: Unicode text, UTF-8 text, with no line terminators
先程の謎ファイルfile
も見てみるとすると
file file
file: JPEG image data, Exif standard: [TIFF image data, big-endian, direntries=6, orientation=upper-left, xresolution=86, yresolution=94, resolutionunit=2], baseline, precision 8, 4032x3024, components 3
まさかのjpeg画像ファイルでした。
オプション
Option | Description |
---|---|
-b | 出力行の最初にファイル名を表示しない(簡易モード) |
-f | 調べるファイルの一覧を指定する |
-L | シンボリックリンクの参照先を調べる |
-N | 出力を整列するためのファイル名への空白の追加を行わない |
-n | 1つのファイルをチェックするごとに標準出力に出力する |
偽装ファイルを見破る事も
いかにも怪しげなファイルがあります。
file ayashigena.txt
ayashigena.txt: PNG image data, 9999 x 9999, 8-bit/color RGBA, non-interlaced
中身はpngファイルでした。
学んだこと
ファイルの正体なんか知ってどうするんだと思いましたが、セキュリティ観点から使用できるというのは目からウロコでした。
何も考えずにファイル実行というのは考えもののようです。
まあLinuxなんでうっかりダブルクリックなんてことはないのですがw
猫たちはそこらへんで転がってます。
参考資料
fileコマンドでファイルの種類を調べる方法
HowtoForgeに11月20日(米国時間)に掲載された記事が、ファイルのデータ種類を判別するfileコマンドの使い方を伝えた。fileコマンドを利用することで、拡張子に関係なくそのファイルがどのような種類のデータであるかを判断することができる。
Ubuntu Manpage: file - ファイルタイプを判定する
IBM Documentation
IBM Documentation.
コース一覧 | エンベーダー
コース一覧に関するページです。Linuxを学べるLinux基礎・応用コースを始めとして、エンジニア必須の知識であるデータベースやセキュリティのコースもあります。
コメント