gcc nie ustawia typu MIME. mimetype
odgaduje odpowiedni typ MIME na podstawie zawartości pliku. W przypadku plików ELF (większość skompilowanych plików binarnych i bibliotek współużytkowanych) the header zawiera pole e_type
, które identyfikuje jego typ. Jeśli jest to ET_DYN
, wówczas mimetype
potraktuje go jako bibliotekę współdzieloną.
Domyślnie gcc/ld tworzy pliki binarne, które ustawiają e_type
na ET_EXEC
, które zostaną wykryte jako application/x-executable
. Gdy zostanie użyta opcja wiersza polecenia -pie
, tworzony jest niezależny od położenia plik wykonywalny, który może, podobnie jak biblioteki współdzielone, być ładowany pod różnymi adresami i nadal działać. Ponieważ działa to bardzo podobnie do biblioteki współdzielonej, aby uniknąć zbyt wielu zmian w programie ładującym, takie pliki binarne są oznaczane jako ET_DYN
, nawet jeśli mogą być wykonywane bezpośrednio.
Niektóre dystrybucje systemu Linux, łącznie z użytkownikami, ustawiły domyślnie -pie
. Nadal można to zmienić przy pomocy -no-pie
, ale fakt, że typ MIME jest źle wykrywany, nie powinien być postrzegany jako błąd, a jeśli nie wiesz, co robisz, nie powinieneś go zastępować. -pie
pozwala uzyskać dodatkowe zabezpieczenia, które są zasadniczo niezgodne z -no-pie
.
Co jest 'mimetype'? – melpomene
spróbuj 'file -i hello' – zaufi
mimetype to tylko skrypt. Tło mojego pytania jest inne: nie mogę wykonać aplikacji o niewłaściwym typie MIME z eksploratora plików lub paska zadań. – Andreas