技術 · 實用指南
Linux 顯示「cannot execute binary file: Exec format error」?先證明檔案、平台與直譯器邊界
先保留精確位元組並辨識檔案類型,再對照主機檢查機器架構、格式與宣告的直譯器,之後才考慮重建或改權限。

「Exec format error」是格式分類失敗,並不證明執行位元錯誤。改動前先保存精確命令、路徑、工作目錄、Shell、主機架構與檔案 SHA-256;再以唯讀方式判斷位元組是腳本、ELF 可執行檔、目的檔、封存檔,或只是以二進位名稱儲存的錯誤頁。
本流程只處理主機 Shell 的直接執行。若錯誤來自 systemd 單元或 Docker 建置/進入點,保留同一組證據後轉到專用指南,因為服務管理器與容器會改變真正執行的路徑、平台與直譯器。
凍結一次失敗並確認精確位元組
記錄原樣命令、結束狀態、絕對路徑、工作目錄、Shell、uname -s、uname -m 與目標 sha256sum。唯讀解析符號連結,並確認包裝器是否選到另一條路徑。
對精確路徑執行 file 並保存完整輸出。若結果是 HTML、JSON、純文字、封存檔、可重新定位目的檔或資料,應先調查下載或建置產物,而不是改權限。
區分腳本與 ELF 二進位
對腳本只檢查第一行原始位元組,確認 #!、絕對直譯器路徑,以及歸位字元或位元組順序標記是否改變核心看到的路徑。另行唯讀驗證直譯器,不要先重寫整份腳本。
對 ELF 執行 readelf -h,將 Class、Data、Type 與 Machine 和目標主機比對。此處不符屬於建置產物或發行選擇問題,不是 chmod 問題。
證明 ELF 直譯器邊界
若 ELF 標頭相符,再用 readelf -l 檢查要求的程式直譯器,記錄精確路徑,並驗證目標主機是否存在預期載入器。CPU 標籤相容不能證明 ABI 與載入器完整。
不要複製名稱相近的隨機檔案來「補」載入器。應選擇針對受支援 ABI 建置的產物,或透過受控套件流程安裝有文件依據的執行環境。
修復產物生成邊界,而不是症狀
作業系統或機器錯誤就選擇或重建正確目標;ELF 類型錯誤就發佈可執行檔而非目的檔或函式庫;文字載荷就修正下載、驗證、重新導向或封裝;腳本標頭異常則只修復並審閱該邊界。
在事件紀錄中同時保留原雜湊與替換雜湊。若路徑由建置、部署或更新器產生,應修復該生產者,避免下次又靜默恢復錯誤位元組。
重複同一呼叫並定義結案條件
在同一目標主機與工作目錄執行同一命令,記錄替換雜湊、檔案分類、相關 ELF 或 shebang 證據、結束狀態,以及一個小而明確的預期行為檢查。
只有目標執行成功且先前所有不相容都有解釋時才結案。若上下文來自 systemd 或 Docker,請把證據交給專用流程,不要混合不同執行環境邊界。
