简单整理了进程相关的用户ID和组ID的要点
1. 6种ID:
(1) 用于标识用户: 实际用户ID;实际组ID;
(2) 用于权限检查:有效用户ID;有效组ID;
(3)exec函数保存的ID:保存的设置用户ID;保存的设置组ID;
2. 设置实际用户ID和有效用户ID函数:int setuid(uid_t uid);
3. 实际用户ID在系统登录时确定,但可以由超级用户用setuid函数设置;
4. 通常,有效用户ID = 实际用户ID,但如果程序模式中设置了set-user-ID位,执行此文件时,进程的有效用户ID变为文件的所有者用户ID;
5. 超级用户调用setuid,会将实际用户ID,有效用户ID,保存的设置用户ID都设置为参数uid;
6. 普通用户调用setuid,如果参数uid等于实际用户ID或保存的设置用户ID,则将有效用户ID改为参数uid;
7. 更改用户ID的方法汇总:
8. 设置有效用户ID函数:int seteuid(uid_t uid);
9. 对于普通用户,seteuid和setuid函数效果相同;对于超级用户,seteuid只改变有效用户ID,setuid改变所有3个用户ID;
10. 组ID的情况与用户ID的情况类似。