Linux中可执行文件访问权限的目的是什么?

我从来没有明白这一点,因为如果你有读取文件的权限,这是否意味着你可以把它复制到别的地方,这样就可以执行它了?

我错过了什么?

可执行标志在那里向内核指示数据应该被读取然后运行。 这是通过执行某些事情和阅读某些东西的不同调用来实现的。 对于已编译的程序,很可能只有执行权限,并且没有读权限; 你甚至不能在别处“cp”。 对于像shell脚本这样的解释项目,读取是需要执行的。

我知道一个Linux发行版使用execute标志来控制在启动时触发的脚本。

简而言之,Execute标志用于指示编译代码的运行能力。 解释的代码通过父处理器运行,可能只需要“读取”。

一些潜在的原因:

  • 它保护文件不被意外执行。
  • 很明显,这种方式是可执行文件(在Windows上,您需要检查registry以查看可执行文件扩展名列表)
  • 它可以保护您免受一些安全漏洞的攻击(攻击者不仅需要将文件放在系统上并以某种方式执行该文件,还需要一种方法来更改其权限)。
  • 如果用户可以写入的唯一磁盘有一个“移除”执行位的umask / mount选项,则它们不能将其复制到其他位置并使其可执行(至less,不在该机器上,而且可能需要其他预防措施也)

可能还有其他原因

这并不意味着你可以将它复制到其他地方,从而允许你执行它吗?

不,这是不正确的。

有些情况下,即使设置了可执行位,也无法执行文件。 这里至less有两个:

  • 一个明确禁止执行的限制shell
  • 一个挂载noexec选项的文件系统