setuid 和 setgid 混淆

setuid 和 setgid 混淆

我试图完全掌握 setuid 和 setgid 的概念,但我不太确定实际上以何种方式提升权限。让我举个例子:

用户

userA (groups: userA groupA)
userB (groups: userB groupB GroupC)

可执行文件

Permission owner group  filename
-rws-----x userA groupD file
-rwsrws--x userA groupD file2

如果 userB 执行filefile2,可执行文件将具有什么组权限?我不完全确定可执行文件是否获得了用户/组权限两个都调用者和文件所有者,或者权限是否被“替换”。

我知道这是一个愚蠢的示例,因为 setuid 和 setgid 通常用于调用“全能”应用程序,但我希望这个示例能够更好地实际概念化 setuid 和 setgid 的工作原理。

答案1

setuid设置有效uid尤伊德setgid设置有效gid埃吉德

在这两种情况下,调用者 uids 和 gids 都将保留在原处。因此,粗略地说,除了调用者 uid 和(活动)gid 之外,您还将获得该 uid/gid。

有些程序可以很好地区分这一点。

如果您登录系统,然后suroot,然后发出a,who am i您将看到您的“旧”帐户。

su是这些 suid 二进制文件之一,它将改变尤伊德

答案2

据我所知:

  • 可执行setuid文件以可执行文件的所有者和调用者的组身份执行。您没有可执行文件所有者的组权限。

  • 可执行setgid文件作为调用者执行。组集包含调用者的组和可执行文件的组。

(可以肯定的是,我刚刚在 Ubuntu 10.04 中测试了这一点)

相关内容