用户 ID 和 组 ID
注意:以下的概念通常是跟进程相关的
文件所有者ID 和 文件所有者组ID
这两个id可通过获取文件stat来获取
struct stat 结构中的 st_uid 和 st_gid 成员真好就对应这两个id
实际用户ID 和 实际组ID :
int getuid(); 获取用户ID
int getgid(); 获取实际组ID
这俩ID 指出执行当前进程的是谁
有效用户ID 、 有效用户组ID 和 附加组ID:
int geteuid(); 获取有效用户ID
int getegid(); 获取有效组ID
用于文件访问权限的检查。
通常,进程的有效用户ID 就是 进程的 实际用户ID
有效组ID 就是 实际组ID
在用户模式字中 (就是 struct stat 结构中的st_mode成员 ),有 两个位 : 设置用户ID位 和 设置用户组位
如果这两个位设置后 , 执行可执行文件的时候 进程的有效用户 ID 就会被设置成 可执行文件的 所有者的用户ID
进程的有效组ID 会被设置成 可执行文件的 所有者的组ID
这样进程就会以 可执行文件所属用户 所 拥有的 权限 运行
设置用户ID 位 和 设置用户组 ID 位 可以用 S_ISUID 和 S_ISGID 这两个 常量测试
保存的设置用户ID 和 保存的设置组ID
当进程的有效用户ID 和 有效用户组ID 改变的时候, 保存的设置用户ID 和 保存的设置组ID 这俩 变量会保存 有效ID 的 一个副本
当调用 exec 函数的时候, 会利用 这两变量来恢复进程的有效ID