unix-like系统中的用户标识是什么?

一、前言

在开发linux应用的时候,我们经常会遇到getuid这个api,经常基于uid作为判断条件。uid其实是unix-like系统中的用户标识,本文就来介绍何为用户标识,包含如下内容:
1.什么是多用户系统?
2.什么是uid?

二、什么是多用户系统?

多用户系统指的是一台计算机能够同时登陆多个用户(账号),并且每个用户能够同时使用计算机。多用户系统使用的是分时技术,将计算机的处理资源分成多个时间片,让每个用户分时去使用,这样在使用者的感受中就是多个用户同时在使用计算机。
一个典型的应用场景就是服务器。服务器本质上也是一台计算机,一般的科技公司都会配备一定数量的服务器,然后为每一个开发人员创建一个账号,大家都同时使用一台服务器进行工作。
多用户系统允许多个用户共享主机的硬件和软件资源,如CPU、内存、磁盘空间、软件程序等,从而提高了资源的利用率。
系统管理员可以创建、管理多个用户账号,并为每个用户分配不同的权限和资源使用范围。用户登录系统后,根据自己的权限进行操作。
Windows 7及之后的版本、Linux、UNIX等都是典型的多用户操作系统。它们支持多个用户同时登录和使用系统资源。

三、什么是uid?

上面介绍了什么是多用户系统,每个用户在登陆计算机的时候都要输入账号和密码,这里说的账号其实就是所谓的用户标识。unix-like系统一般都有一个口令文件/etc/passwd,该文件的内容如下所示:
在这里插入图片描述
(3-1)
拿其中的一行来介绍:

root:x:0:0:root:/root:/bin/bash

用冒号分隔各个部分的内容,上面代码的定义如下:

用户名(root):加密口令(x):数字用户ID(0):数字组ID(0):注释字段(root):起始目录(/root):shell程序(/bin/bash)

UID说的就是数字ID,用来和用户名一一对应,因为计算机处理数字并处理字符串要方便。
系统还能根据用户ID来检验用户是否有执行某些操作的权限。
root用户是超级用户,一个系统只有一个超级用户,系统的某些功能只对超级用户释放,超级用户对系统有最高的权限。

四、组ID

一个公司人多了为了方便管理就会分为一个个小组,当计算机用户多了,为了方便管理,也会将相关联的用户分到一个组里,每个组也都有一个数字ID,这就是组ID(gid)。
同样,也有一个口令文件用来记录组信息:/etc/group
同组的用户可以共享资源。

五、相关api

getuid(): 用来获取当前进程的用户ID
getgid():用来获取当前进程的组ID

参考代码如下:

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[])
{
    printf("%s: uid: %d,pid: %d\n",argv[0],getuid(),getgid());

    exit(0);

}

运行结果如下图所示:
在这里插入图片描述

(5-1)
同时查看口令文件/etc/passwd,之前当前程序的用户信息如下:

bb-yy:x:1000:1000:bb-yy,,,:/home/bb-yy:/bin/bash

done

参考资料:

《UNIX环境高级编程(第3版) (史蒂文斯 (W.Richard Stevens) 拉戈 (Stephen A.Rago))
(Z-Library)》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值