可以读取可执行文件吗?

Modified on: Fri, 13 Sep 2019 13:20:02 +0800

如果文件具有权限-rwx-wx-wx可以被其他用户和组用户读取,还是只能执行和写入?有没有办法通过执行来读取可执行文件?

最佳答案

具有-rwx-wx-wx权限的文件具有对所有者的读/写/执行权限,以及对其他人的写/执行(但不读取)权限。

如果它是一个脚本(通常是第一行带有#!的文本文件),那么不能由其他人执行,因为执行脚本真正执行解释器,它必须能够读取脚本。 (解释器必须是二进制文件,而不是另一个脚本。)(实际上,对于所有系统都不是这样; Ubuntu,3.2.0 Linux内核,允许解释器本身是一个解释的脚本。似乎有一个限制大约4个级别。这不太可能与这个问题有关。)

如果它是二进制可执行文件,可以直接执行,但无法读取其内容。这意味着,例如,除了所有者之外的其他人可以将其作为命令运行,但无法获取可执行文件的副本。

当然执行需要读取,但它由内核读取,而不是由用户读取。您可以通过检查进程运行时的内存来获取有关可执行文件内容的一些信息,但我怀疑您是否可以重新构建二进制可执行文件。如果可执行文件是setuid,则无法检查进程的内存(除非您有权访问它正在执行的帐户)。

顺便说一下,-rwx-wx-wx是一组非常奇怪的权限;它保护文件不被所有者以外的任何人读取,但允许任何人修改它。我想不出一个有意义的案例。


相关问答

添加新评论