Co to jest format pliku EXEC?
Pliki wykonywalne dla systemów Unix i systemów uniksopodobnych mogą być zapisywane z rozszerzeniem .exec. Plik .exec może zawierać praktycznie dowolny program wykonywalny w danym systemie operacyjnym - albo skompilowany plik binarny (taki jak binarny ELF w systemie Linux/Unix), albo skrypt interpretera w formacie tekstowym. Rozszerzenie .exec ma swój odpowiednik w postaci plików .exe w systemach Windows.
Zasada w systemach Unix jest taka, że pliki wykonywalne są zapisywane bez żadnego rozszerzenia - przyrostek .exec jest używany do oznaczania plików wykonywalnych w menedżerach plików i środowiskach IDE w systemach macOS, Linux lub FreeBSD, aby odróżnić gotowy do uruchomienia produkt od plików źródłowych.
Możliwość uruchomienia pliku .exec jest określana przez bity uprawnień pliku i jego wewnętrzny nagłówek, a nie przez rozszerzenie. Jądro systemu sprawdza magiczne bajty pod offsetem 0: pliki binarne ELF zaczynają się od \x7FELF, pliki binarne macOS Mach-O od FEEDFACE, a skrypty od #!, po którym następuje ścieżka do interpretera (np. #!/bin/bash dla skryptu .sh).
Pliki .exec można uruchamiać z wiersza poleceń (powłoki). W systemie macOS liczy się bit wykonywalności (atrybut uprawnień x) - plik uruchamia się poprawnie z rozszerzeniem .exec lub bez niego. Przed uruchomieniem nieznanego pliku .exec użyj polecenia file, aby potwierdzić jego rzeczywisty typ.
Bezpieczeństwo
RYZYKO: HIGHPlik wykonywalny to typ pliku o najwyższym ryzyku przy uruchamianiu z niezaufanego źródła: plik .exec działa z Twoimi uprawnieniami użytkownika i może czytać, modyfikować, szyfrować lub usuwać Twoje pliki oraz pobierać dodatkowy kod. Przed uruchomieniem pliku, którego sam nie zbudowałeś: użyj „file file.exec”, aby zobaczyć, co to jest, a jeśli to skrypt tekstowy, najpierw go przeczytaj. W systemie macOS Gatekeeper domyślnie blokuje niepodpisane/nieonotowane pliki binarne - to ostrzeżenie służy Twojej ochronie. Nigdy nie używaj bezmyślnie „chmod +x” i nie uruchamiaj plików z forów, e-maili czy przypadkowych pobrań. Rozszerzenie „.exec” nie daje żadnego bezpieczeństwa; ufaj źródłu, a nie przyrostkowi.
Szczegóły formatu
w pigułce- Znacznik eksportu aplikacji/IDE - Niektóre narzędzia programistyczne i aplikacje nazywają swoje wyjściowe artefakty wykonywalne *.exec czysto etykietowo; rzeczywisty typ pod spodem to nadal ELF/Mach-O/skrypt.
Programy otwierające pliki EXEC
Szczegóły techniczne
specyfikacja| Kodowanie | Binarne (skompilowany kod ELF lub Mach-O) lub zwykły tekst (skrypt interpretera z shebang) |
| Format binarny w Linux/Unix | ELF (Executable and Linkable Format) - magiczne bajty 7F 45 4C 46 („\x7FELF”) pod offsetem 0 |
| Format binarny w macOS | Mach-O - magiczne bajty FE ED FA CE (32-bit) lub FE ED FA CF (64-bit); pliki fat/universal używają CA FE BA BE |
| Znacznik skryptu | Shebang (#!) pod offsetem bajtowym 0, po którym następuje ścieżka do interpretera, np. #!/usr/bin/env python3 - analizowany przez jądro przed wykonaniem |
| Typ MIME | application/x-executable (Linux binary); application/x-mach-binary (macOS); application/x-shellscript (skrypt tekstowy) |
| Kontrola wykonywania | Bity uprawnień Unix - musi być ustawiony bit wykonywalności (x); samo rozszerzenie .exec jest ignorowane przez jądro |
| Platforma docelowa | Linux, macOS, warianty BSD (FreeBSD, OpenBSD, NetBSD), Solaris i inne systemy uniksopodobne |
| Kolejność bajtów | Little-endian dla x86-64 i ARM (większość nowoczesnego sprzętu); big-endian na starszych platformach RISC Unix, takich jak SPARC i MIPS |
| Typowy rozmiar pliku | Od 1 KB (minimalny skrypt powłoki) do dziesiątek MB (statycznie skompilowany plik binarny) |
| Kodowanie architektury | Zaszyte w polu e_machine formatu ELF (x86-64 = 0x3E, ARM64 = 0xB7, RISC-V = 0xF3) lub polach cputype/cpusubtype formatu Mach-O |
| Integralność kodu | Brak wbudowanej sumy kontrolnej w formacie; macOS obsługuje podpisywanie kodu za pomocą narzędzia codesign; Linux polega na zewnętrznych podpisach GPG lub menedżerach pakietów |
| Kompresja | Brak wbudowanej w format; pliki binarne mogą być pakowane za pomocą UPX lub opakowane w samorozpakowujący się skrypt powłoki |
| Konwencja rozszerzeń | Przyrostek .exec jest nieformalny - większość natywnych plików wykonywalnych Unix nie posiada rozszerzenia; system operacyjny używa magicznych bajtów, a nie nazwy pliku, aby określić sposób uruchomienia |
| Odpowiednik w Windows | .exe (format PE/COFF) - rozszerzenie jest obowiązkowe w Windows, w przeciwieństwie do .exec, które jest opcjonalne w systemie Unix |
| Polecenie inspekcji | Polecenie file identyfikuje rzeczywisty typ binarny (ELF, Mach-O lub interpreter skryptu) niezależnie od rozszerzenia .exec |
| Wydano | N/A (extension-less executables predate the .exec label; concept from early Unix) |
| Najnowsza wersja | N/A - .exec is a convention, not a versioned format |
| Specyfikacja | refspecs.linuxfoundation.org |
Konwersje EXEC
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki EXEC.