从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 +++
检查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
专门存在是为了防止由于存在可在世界范围内写入的可执行文件存储位置而引起的安全问题;您可能会在其中放置文件,但是其他人可能会在执行文件之前将其重写,而现在您并未执行您原本想执行的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句