C/C++程式設計:getgid、 getegid
阿新 • • 發佈:2021-01-08
技術標籤:# C++
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:"" ):"");
}