C/C++编程:getgid、 getegid

1060 篇文章 300 订阅
本文介绍了Linux中与进程用户标识符相关的函数getuid和geteuid,以及它们在权限控制中的作用。getuid返回进程的真实用户ID,而geteuid返回有效用户ID,后者在执行权限检查时起关键作用。文章通过示例代码展示了如何获取这些标识符,并解释了在不同场景下它们的差异和意义。同时,概述了Linux中的用户ID类型,包括真实用户ID、有效用户ID和组标识码。
摘要由CSDN通过智能技术生成

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()谈文件特殊权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值