Trotz Vollstreckungsbefugnis, Genehmigung verweigert

Trotz Vollstreckungsbefugnis, Genehmigung verweigert

Habe eine Binärdatei aus dem Golang-Quellcode kompiliert, aber sie lässt sich nicht ausführen. Ich habe versucht, die Binärdatei herunterzuladen, was auch nicht funktioniert hat. Die Berechtigungen scheinen alle richtig zu sein. Das Ausführen der Datei von Go aus funktioniert aus irgendeinem Grund.

Ausgabe von ~/go$ go run src/github.com/exercism/cli/exercism/main.go1:

NAME:
   exercism - A command line tool to interact with http://exercism.io

USAGE:
   main [global options] command [command options] [arguments...]

Ausgabe von ~/go/bin$ ./exercism:

bash: ./exercism: Permission denied

Ausgabe von ~/go/bin$ ls -al:

total 9932
drwxr-xr-x 2 joshua joshua     4096 Apr 28 12:17 .
drwxr-xr-x 5 joshua joshua     4096 Apr 28 12:17 ..
-rwxr-xr-x 1 joshua joshua 10159320 Apr 28 12:17 exercism

Ausgabe von ~/go/bin$ strace ./exercism:

execve("./exercism", ["./exercism"], [/* 42 vars */]) = -1 EACCES (Permission denied)
write(2, "strace: exec: Permission denied\n", 32strace: exec: Permission denied
) = 32
exit_group(1)                           = ?
+++ exited with 1 +++

Antwort1

Überprüfen Sie, ob dies noexecam betreffenden Einhängepunkt nicht der Fall ist. Oder wählen Sie einen besseren Ort zum Starten Ihres Skripts.

$ mount | grep noexec
[ snip ]
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime)
$ cat > /dev/shm/some_script
#!/bin/sh
echo hi
$ chmod +x /dev/shm/some_script
$ /dev/shm/some_script
bash: /dev/shm/some_script: Permission denied
$ mv /dev/shm_script .
$ ./some_script
hi

noexecexistiert speziell, um Sicherheitsprobleme zu vermeiden, die durch allgemein beschreibbare Speicherorte für ausführbare Dateien entstehen; Sie können eine Datei dort ablegen, aber jemand anderes kann sie vor der Ausführung umschreiben, und nun führen Sie nicht den Code aus, den Sie auszuführen glaubten.

verwandte Informationen