실행 권한에도 불구하고 권한이 거부되었습니다.

실행 권한에도 불구하고 권한이 거부되었습니다.

바이너리는 golang 소스에서 컴파일되지만 실행되지는 않습니다. 바이너리를 다운로드해 보았으나 역시 작동하지 않았습니다. 권한이 모두 올바른 것 같습니다. 어떤 이유로 이 파일을 go에서 실행하면 작동합니다.

출력 ~/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...]

출력 ~/go/bin$ ./exercism:

bash: ./exercism: Permission denied

출력 ~/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

출력 ~/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 +++

답변1

이 설정이 noexec관련 장착 지점에 영향을 미치지 않는지 확인하십시오. 또는 스크립트를 실행하기에 더 좋은 위치를 선택하세요.

$ 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

noexec누구나 쓸 수 있는 위치에 실행 파일을 저장할 때 발생하는 보안 문제를 방지하기 위해 특별히 설계되었습니다. 파일을 거기에 저장할 수도 있지만 실행하기 전에 다른 사람이 파일을 다시 쓸 수 있으며 이제는 코드를 실행하지 않습니다.

관련 정보