1. 程式人生 > 其它 >C/C++程式設計:getgid、 getegid

C/C++程式設計:getgid、 getegid

技術標籤:# 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:""
):""); }

在這裡插入圖片描述

總結

從getuid()&+geteuid()談檔案特殊許可權