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