ash*_*him 73 permissions executable shell-script
如果没有读取权限,是否可以执行脚本?在 root 模式下,我制作了一个脚本,我希望其他用户执行此脚本但不读取它。我确实chmod禁止读写但允许执行,但是在用户模式下,我看到消息说:权限被拒绝。
Arc*_*ege 75
问题是,剧本是不是正在运行,但解释(bash,perl,python等)。解释器需要阅读脚本。这与“常规”程序(如 )不同ls,因为程序直接加载到内核中,就像解释器一样。由于内核本身正在读取程序文件,因此无需担心读取访问。解释器需要读取脚本文件,因为需要读取普通文件。
kwa*_*ick 40
这仅适用于二进制文件。
$ chown foo:foo bar
$ chmod 701 bar
Run Code Online (Sandbox Code Playgroud)
作为非特权用户:
$ ls -lha bar
-rwx-----x 1 foo foo 7.0K 2012-03-15 03:06 bar
$ cat bar
cat: bar: Permission denied
$ ./bar
baz
Run Code Online (Sandbox Code Playgroud)
现在,这是踢球者。虽然该文件无法通过传统方式读取,但您实际上无法阻止读取该文件。这实际上是http://smashthestack.org/上的一个挑战(级别 13)。有一个众所周知的实用程序hktrace,它允许您使用ptrace.
这是不可能的,至少在 Linux 上是不可能的(其他 Unices 可能允许);想想看,当您运行脚本时,shell 需要读取它才能知道要做什么。