当文件被访问时,系统会查看进程的有效 UID、它的 GID 集,并将这些与文件权限(可能还有文件的 ACL)相匹配。
创建文件时,系统在决定是否可以创建文件时会查看相同的进程值,但使用有效 UID 来设置文件的 UID,并使用有效 GID 或目录的 GID(如果 SGID 位是在目录中设置的,或者如果您使用的是 MacOS X)。
该access()系统调用检查是否真正的UID和GID真正(而不是有效UID和GID)可以访问该文件。
如果您有一个 SUID (setuid) 程序,那么它可以使用它的 EUID 来访问用户无法访问的文件。但是,如果它想代表用户(运行它的人的 RUID)创建文件,那么它需要放弃 SUID 权限,因此 EUID 与 RUID 相同。很久以前,一旦你放弃了 SUID 特权,它就永远失去了;你无法取回它。保存的 UID 值允许您切换回来,这简化了 SUID 程序的权限管理。