Real User ID v/s Effect User ID v/s ...

查看原文

Unix 操作系统鉴别用户的方式是通过内核提供的 user identifier (user ID, uid) 这个值。UID 会和一个 group identifier (GID) 相关联,用于决定系统资源的访问权限。命令行工具 id 可以查看当前用户的 UID 以及用户名,组。关于跑着的进程,会涉及到好几个 UID 的概念:

  • euid, Effective user ID:系统用于检查权限。进程新建文件时,文件的 owner 也会用进程的 euid。
  • fsuid, File system user ID: 历史上曾经出现过的一个概念,简单可以理解为就是 euid。
  • suid, Saved user ID: 进程跑着的时候,需要降权做一些操作,就需要修改 euid。例如 root 要以别的用户做事情,就会把自己的 euid=0 存到 suid 去。稍后 euid 可以从 suid 恢复。
  • ruid, Real user ID: 进程真正的 owner,跟发送信号时的权限有关。简单来说,没有超级用户权限的进程要想发信号,那么自己的ruid/euid 和要发信号的那个进程的 ruid/suid 要匹配。

65534 这个 UID 其实是 -2 的补码 (2^16-2)