可执行文件的所有者没有执行权限是否有意义?

可执行文件的所有者没有执行权限是否有意义?
  1. 假设一个可执行文件的 set-user-id 位已打开。

    当进程执行可执行文件时,它将其有效用户ID更改为可执行文件的所有者用户ID,内核通过文件访问测试决定该文件可以执行。看 https://stackoverflow.com/questions/41456225/how-and-when-does-exec-change-the- effective-user-id-when-the-set-user-id-is-s程序文件的set-user-ID有什么用?

    这是否意味着可执行文件的所有者用户 ID 可能无法通过内核执行的文件访问测试,即使测试已经通过了基于进程的原始有效用户 ID 的测试?

  2. 一般来说,可执行文件的所有者没有执行权限有什么意义吗?

谢谢。

答案1

  1. 我不知道它是如何工作的(主要是因为我从未见过这种配置有任何用途)。我的猜测是,这并不重要,因为 SUID 有效地seteuid()在启动过程的最后阶段(就在执行传输到程序本身之前)进行了调用,这将是文件被加载执行,因此一旦检查发生(检查发生在(至少在 Linux 上)任何数据加载到内存之前)。

  2. 这取决于你所说的有意义是什么意思。它在功能上什么也不做,因为所有者可以自己设置可执行位(假设没有额外的强制访问控制来阻止他们这样做),所以在这方面并不是真的。至于它在有用的意义上是否有意义,我想不出任何情况下,所有者没有执行权限但其他用户有执行权限是有意义的,所以我也会说不。

相关内容