A pesar del privilegio de ejecución, se deniega el permiso

A pesar del privilegio de ejecución, se deniega el permiso

Compilé un binario de la fuente de golang, pero no se ejecutará. Intenté descargar el binario, que tampoco funcionó. Todos los permisos parecen estar correctos. Ejecutar el archivo desde go por alguna razón funciona.

Salida de ~/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...]

Salida de ~/go/bin$ ./exercism:

bash: ./exercism: Permission denied

Salida de ~/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

Salida de ~/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 +++

Respuesta1

Compruebe que noexecno esté vigente en el punto de montaje en cuestión. O elija un lugar mejor para iniciar su script.

$ 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

noexecexiste específicamente para evitar problemas de seguridad que surgen al tener lugares de escritura mundial que almacenan archivos ejecutables; podrías colocar un archivo allí, pero otra persona podría reescribirlo antes de ejecutarlo y ahora no estás ejecutando el código que pensabas.

información relacionada