EXEC ファイル形式とは?
Unix および Unix 系システムの実行可能ファイルは、.exec 拡張子を付けて保存されることがあります。.exec ファイルは、特定のオペレーティングシステム上で実行可能なほぼすべてのプログラム(Linux/Unix 上の ELF バイナリなどのコンパイル済みバイナリ、またはプレーンテキストのインタープリタスクリプト)を保持できます。.exec は、Windows システムにおける .exe ファイルに対応するものです。
Unix システムの原則として、実行可能ファイルは拡張子なしで保存されます。.exec サフィックスは、macOS、Linux、または FreeBSD のファイルマネージャーや IDE において、実行可能な出力をソースファイルと区別するために使用されます。
.exec ファイルを実行できるかどうかは、拡張子ではなく、ファイルのパーミッションビットと内部ヘッダーによって決まります。カーネルはオフセット 0 の magic bytes をチェックします。ELF バイナリは \x7FELF で始まり、macOS の Mach-O バイナリは FEEDFACE で始まり、スクリプトは #! に続いてインタープリタのパス(例:.sh スクリプトの場合は #!/bin/bash)で始まります。
.exec ファイルはコマンドライン(シェル)から実行できます。macOS では、実行ビット(x パーミッション属性)が重要であり、ファイルは .exec 拡張子の有無にかかわらず正しく実行されます。見慣れない .exec ファイルを実行する前に、file コマンドを使用して実際のタイプを確認してください。
セキュリティと安全性
リスク: HIGH実行可能ファイルは、信頼できないソースから実行する場合、最もリスクの高いファイルタイプです。 .exec はユーザー権限で実行され、ファイルの読み取り、変更、暗号化、削除、および追加コードのダウンロードが可能です。自分でビルドしたものではないファイルを実行する前に、「file file.exec」を実行して正体を確認し、テキストスクリプトの場合はまず内容を読んでください。macOS では、Gatekeeper がデフォルトで未署名/未公証のバイナリをブロックしますが、その警告は保護のためにあります。フォーラム、メール、またはランダムなダウンロードからのファイルを盲目的に「chmod +x」して実行しないでください。拡張子「.exec」は安全性を保証しません。サフィックスではなくソースを信頼してください。
形式の詳細
概要- アプリケーション/IDE エクスポートマーカー - 一部のビルドツールやアプリは、生成された実行可能な成果物に純粋にラベルとして *.exec という名前を付けます。その下の実際のタイプは依然として ELF/Mach-O/スクリプトです。
EXEC ファイルを開くプログラム
技術的詳細
詳細仕様| エンコーディング | バイナリ(ELF または Mach-O コンパイル済みコード)またはプレーンテキスト(シバン付きのインタープリタスクリプト) |
| Linux/Unix 上のバイナリ形式 | ELF (Executable and Linkable Format) - オフセット 0 に magic bytes 7F 45 4C 46 («\x7FELF») |
| macOS 上のバイナリ形式 | Mach-O - magic FE ED FA CE (32ビット) または FE ED FA CF (64ビット)。fat/universal バイナリは CA FE BA BE を使用 |
| スクリプトマーカー | バイトオフセット 0 のシバン (#!) に続くインタープリタのパス(例:#!/usr/bin/env python3)。実行前にカーネルによって解析される |
| MIME タイプ | application/x-executable (Linux バイナリ); application/x-mach-binary (macOS); application/x-shellscript (テキストスクリプト) |
| 実行制御 | Unix パーミッションビット - 実行可能 (x) ビットが設定されている必要があります。 .exec 拡張子自体はカーネルによって無視されます |
| ターゲットプラットフォーム | Linux, macOS, BSD 系 (FreeBSD, OpenBSD, NetBSD), Solaris, およびその他の Unix 系システム |
| バイト順序 | x86-64 および ARM (ほとんどの現代のハードウェア) ではリトルエンディアン。SPARC や MIPS などのレガシーな RISC Unix プラットフォームではビッグエンディアン |
| 典型的なファイルサイズ | 1 KB (最小限のシェルスクリプト) から数十 MB (静的にリンクされたコンパイル済みバイナリ) |
| アーキテクチャエンコーディング | ELF の e_machine フィールド (x86-64 = 0x3E, ARM64 = 0xB7, RISC-V = 0xF3) または Mach-O の cputype/cpusubtype フィールドに埋め込まれている |
| コードの完全性 | フォーマット固有のチェックサムはありません。macOS は codesign ツールによるコード署名をサポートしています。Linux は外部の GPG またはパッケージマネージャーの署名に依存します |
| 圧縮 | フォーマットには組み込まれていません。バイナリは UPX でパックされたり、自己解凍型のシェルスクリプトでラップされたりすることがあります |
| 拡張子の慣習 | .exec サフィックスは非公式なものです。ほとんどのネイティブ Unix 実行可能ファイルには拡張子がありません。OS はファイル名ではなく magic bytes を使用して実行方法を決定します |
| Windows での対応 | .exe (PE/COFF 形式) - Unix の .exec が任意であるのに対し、Windows では拡張子が必須です |
| 検査コマンド | file コマンドは、.exec 拡張子に関係なく、実際のバイナリタイプ (ELF, Mach-O, またはスクリプトインタープリタ) を識別します |
| リリース日 | N/A (extension-less executables predate the .exec label; concept from early Unix) |
| 最新バージョン | N/A - .exec is a convention, not a versioned format |
| 仕様書 | refspecs.linuxfoundation.org |
EXEC の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。EXEC ファイルについて最初の質問をしてみましょう。