jkg*_*yti 6 setuid permissions
我试图完全掌握 setuid 和 setgid 的概念,但我不太确定权限实际上以何种方式提升。让我举个例子:
用户
userA (groups: userA groupA)
userB (groups: userB groupB GroupC)
Run Code Online (Sandbox Code Playgroud)
可执行
Permission owner group filename
-rws-----x userA groupD file
-rwsrws--x userA groupD file2
Run Code Online (Sandbox Code Playgroud)
如果 userB 执行file
and file2
,可执行文件将拥有什么组权限?什么我不能完全肯定,无论是的可执行涨势用户/组的权限都调用者和文件所有者,或者如果权限是“替代”。
我知道这是一个愚蠢的例子,因为 setuid 和 setgid 通常用于调用“全能”应用程序,但我希望这个例子能够更好地实际概念化 setuid 和 setgid 的工作原理。
setuid
设置有效 uid euid。
setgid
设置有效 gid eid。
在这两种情况下,调用者 uids 和 gids 都将保留在原处。因此,粗略地说,除了调用者 uid 和(活动)gid 之外,您还将获得该 uid/gid。
有些程序可以很好地区分这一点。
如果您登录系统,然后su
root,然后发出a,who am i
您将看到您的“旧”帐户。
su
是这些 suid 二进制文件之一,它将更改euid。