Uid 和 gid 与文件权限的关系

Uid 和 gid 与文件权限的关系

我对 uid 或 gid 对进程执行文件的能力有何影响感到困惑。我阅读了 APUE 中关于它们的部分,但我一定错过了 Stevens 解释这一点的部分。我知道超级用户的 id 为 0,可以执行任何文件,但我不知道特定 uid 或 gid 编号会发生什么。我也不太确定 uid 或 gid 是否相关,或者 euid 和 egid 是否是唯一重要的东西?

例如这是我们在课堂上遇到的一道题:

假设有效用户 ID 为 4、有效组 ID 为 7 的进程尝试执行用户 ID 为 4、组 ID 为 9、权限为 rw-rx--x 的文件。会发生什么情况(以及为什么)?

所以我认为,由于未授予用户写入权限,因此该进程应该无法执行该文件?或者由于 uid 和 euid 相同,因此该进程可以执行该文件?egid 和 gid 在其中起什么作用?

答案1

我想我搞明白了,所以如果 euid 与 uid 匹配,并且授予用户执行权限,则将执行该文件。同样,如果 egid 和 gid 匹配,并且设置了 gid 执行位或设置了其他执行位(没有其他 id 需要检查,因此其他执行位就足够了),则执行将通过。如果这些都不成立,则将拒绝权限。

因此,在上面的例子中,euid 与 uid 匹配,但未设置用户执行位。设置了组执行位,但 egid 与 gid 不匹配。但设置了其他执行位,因此文件将成功执行。

相关内容