Apesar do privilégio de execução, obtenção de permissão negada

Apesar do privilégio de execução, obtenção de permissão negada

Compilei um binário da fonte golang, mas ele não será executado. Tentei baixar o binário, que também não funcionou. Todas as permissões parecem estar certas. Executar o arquivo go por algum motivo funciona.

Saída 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...]

Saída de ~/go/bin$ ./exercism:

bash: ./exercism: Permission denied

Saída 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

Saída 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 +++

Responder1

Verifique se isso noexecnão está em vigor no ponto de montagem em questão. Ou escolha um lugar melhor para iniciar seu 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 especificamente para evitar problemas de segurança decorrentes de locais graváveis ​​em todo o mundo que armazenam arquivos executáveis; você pode colocar um arquivo lá, mas alguém pode reescrevê-lo antes de executá-lo, e agora você não está executando o código que pensava que estava.

informação relacionada