如果我想创建二进制可执行文件,并且我想阻止某人在我的目录中执行它,但我仍然希望它们能够将它复制到自己的区域,我必须给它们读取权限,但是没有执行权限。
现在我意识到,对于用高级语言编写的文件,比如python,执行权限并不是一个真正的概念。任何具有读取权限的人都可以使用命令(python,例如.py文件)来运行它们,这是当某人"执行"时实际发生的事情。它们。
但我想,二进制文件有所不同。它们可以在没有读取权限的情况下执行,因为它们确实正在执行,而不仅仅是拖拽到需要读取权限的解释器命令。
但后来我了解了sh命令,它似乎可以作用于二进制文件(不像bash,它拒绝)。有没有办法禁用它,或屏蔽二进制文件?
答案 0 :(得分:1)
笏?
yac@rainbowdash % vim a.c
yac@rainbowdash % gcc a.c
yac@rainbowdash % ./a.out
a
yac@rainbowdash % ls -l a.out
-rwx------ 1 yac yac 11877 Oct 10 02:27 a.out*
yac@rainbowdash % chmod -x a.out
yac@rainbowdash % ./a.out
zsh: permission denied: ./a.out
yac@rainbowdash % sh ./a.out
./a.out: ./a.out: cannot execute binary file
yac@rainbowdash % cat a.c
#include <stdio.h>
void main(void) {printf("a\n");}
但如果他们无论如何都可以阅读,那么执行只是
yac@rainbowdash % cp a.out b.out
yac@rainbowdash % chmod +x b.out
yac@rainbowdash % ./b.out
a
一份副本
如果你的顾虑是&#34;在我的目录中执行&#34;他们可以
% cd your/directory && ./their/executable/copy