getuid()函数

使用这个函数可以获取运行某个进程(程序)的用户的uid。

Linux系统使用一个专门的文件来将用户的登录名匹配到对应的UID值,我们可以使用命令 sudo nvim /etc/passwd 进行查看,包含了一些与用户相关的信息。

root:x:0:0::/root:/bin/bash
kato:x:1000:1000:kato:/home/kato:/usr/bin/zsh

其实这个文件有很多条信息,我只单独列出这两条。很清晰的看到每条信息由7个字段组成,由:隔开。
字段包含如下信息:
1️⃣ 登录用户名
2️⃣ 用户密码(进行了别的处理,这里x简单表示,加密后存储在/etc/shadow文件中)
3️⃣ 用户账户的UID(数字形式)
4️⃣ 用户账户的组ID(GID)(数字形式)
5️⃣ 用户账户的文本描述(称为备注字段)
6️⃣ 用户HOME目录位置
7️⃣ 用户的默认shell

从我给出的两条信息中可以得到,我的普通用户kato的uid为1000,root用户的uid为0。
现在我们知道了UID,使用一个例子来看看:
getuid.c

#include <stdio.h>
#include <unistd.h>

int main(void)
{
  uid_t uid = getuid();

  if (uid == 0)
    printf("运行本程序的用户为root,它的uid:%d \n", uid);
  else
    printf("运行本程序的用户为普通用户,它的uid:%d \n", uid);

  return 0;
}

运行结果:

$ gcc getuid.c -o getuid
$ ./getuid
运行本程序的用户为普通用户,它的uid:1000
$ sudo ./getuid
运行本程序的用户为root,它的uid:0
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值