Die "Architektur" der Datei ändert sich nicht - Sie müssen sicherstellen, dass sie ein korrektes Format hat. Das heißt, die Datei muss bereits eine gültige ELF-Binärdatei oder ein Skript mit einem gültigen #!
Header oder etwas anderes sein, das Ihr bestimmter Kernel erkennt (z. B. a.out oder MZ / PE).
Was chmod
bedeutet, ist nur ein bisschen in den Dateiberechtigungen festgelegt, um dem Kernel mitzuteilen, dass der Benutzer diese Datei ausführen darf . Es kann als kleine Sicherheitsbarriere wirken und bestimmte Arten von Unfällen verhindern. (Beachten Sie, dass +x
hier eine Abkürzung für ugo+x
; es ist ein Berechtigungsbit wie Lesen / Schreiben.)
Wenn Sie + x für eine Datei setzen, die der Kernel nicht erkennt, wird nur ein Fehlercode vom exec
Syscall zurückgegeben. (Beachten Sie, dass einige Shells spezielle Handhabung für diese - wenn der Kernel „unbekanntes Format“ berichtet, wird die Shell versuchen, die Datei als Skript zu interpretieren intern, wie das ist, wie Scripte gearbeitet #!
wurde erfunden .)