getgid、 getegid
#include <unistd.h>
#include <sys/types.h>
/*
* 函数说明:getgid()用来取得执行目前进程的组识别码。
* 返回值:返回组识别码
*/
gid_t getgid(void);
/*
* 函数说明:getegid()用来取得执行目前进程有效组识别码. 有效的组识别码用来决定进程执行时组的权限.
* 返回值:返回有效的组识别码.
*/
gid_t getegid(void);
使用
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
main()
{
printf("gid is %d\t egid is %d\n", getgid(), getegid());
}
在linux中每个进程有三个[实际上有第4个]用户标识符.
- real uid : 真实用户ID.
- saved uid : 已保存用户ID ,
- effective uid : 有效用户ID
真实用户ID(real uid)是login时的用户.而在运行过程中,用于所有的安全检查的是有效用户ID(effective uid).
一般情况下:real uid = saved uid = effective uid
#include<stdlib.h>
#include <stdio.h>
#include <zconf.h>
#include <pwd.h>
main()
{
printf("uid = %d, euid = %d ", getuid(), geteuid());
struct passwd *pw = getpwuid(geteuid());
printf("owmer = %s", (pw)?(pw->pw_name?pw->pw_name:""):"");
}