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

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

阅读 7.5k
2 个回答

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

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

新手上路,请多包涵

real user id (RUID)

进程的创建者用户ID,进程的执行者。该ID仅root用户可以修改。

effective user id (EUID)

该用户ID标识用户进程执行操作的权限。普通用户可以将EUID设置为RUID或SUID,而超级用户可以将EUID设置为任意的合法UID。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进