问一下linux下的effective user id 和 real user id 有什么区别?


感觉是一样的,什么样的情况下不一样?文件的owner id 是不是等于拥有者的user id?

linux编程 c

520874 10 years, 1 month ago

uid euid 大部分时候是一样的,就是你login所用的uid,但在一个情况下会不一样:
Unix下的可执行文件可以设定 sticky 位,比如用 chmod u+s some_exec ,此时这个 some_exec 是一个“SetUID”程序,无论你的 uid 是什么,当你运行这个程序时,你的 euid 会变成这个 some_exec 的属主的 uid ,一般把它叫 suid ,此时你的这个进程的权限就变成了这个属主的权限,但uid依然保持不变。这个进程可以用 seteuid(2) uid suid 之间切换。
类似的, gid 也有 rgid sgid egid ,工作方式与 uid 相同。

最常见的“SetUID”程序就是 su sudo ,你可以用它们临时切换权限。

soviet answered 10 years, 1 month ago

Your Answer