#includeuid_t getuid(void);uid_t geteuid(void);//获取有效用户idgid_t getgid(void);gid_t getegid(void);int setuid(uid_t uid);int setgid(gid_t gid); int seteuid(uid_t euid);//设置有效用户idint setegid(gid_t egid);int setreuid(uid_t ruid,uid_t euid);//同时修改实际用户id以及有效用户idint setregid(gid_t rgid,gid_t egid);//如果只想修改其中一个,只需要把另一个指定为-1int getresuid(uid_t *ruid,uid_t *euid,uid_t *suid);//suid是保存set-user-ID值int getresgid(gid_t *rgid,gid_t *egid,gid_t *sgid);int setresuid(uid_t ruid,uid_t euid,uid_t suid);//如果只想修改其中一个,只需要把另一个指定为-1int setresgid(gid_t rgid,gid_t egid,gid_t sgid);调用成功返回0,失败返回-1,另外如果用户id和组id都修改,那么应该先写组id函数,如果组id函数写在后面,那么该组函数失败
#includeint setfsuid(uid_t fsuid);//设置文件系统用户idint setfsgid(gid_t fsgid);//因移植问题应避免使用这两个函数int getgroups(int gidsetsize,gid_t grouplist[]);//将当前进程所属组的集合返回至grouplist,且其长度不超过gidsetsize