前言

在学习Linux以及其他的各种操作系统的时候,有时你会遇到各种名字的id,可能你一看它们就会觉得很苦恼,觉得很费劲,实际上它们并不需要你去记住它们的每个数字,但是你只要记住它们所代表的含义即可了。

在计算机的设计中包含了许多宏大的思想,其中有一条就是为计算机的每一步,每一个程序执行产生的进程、线程等做一个标记,可以让我们通过这些标识,知道它们间的关系、次序,便于我们的管理。后来这个打标签的概念,被扩展到了计算机的方方面面,不仅是电脑的零件,程序的进程,网络上的地址甚至是现在的物联网也用了这个概念,给每一个物品一个唯一的身份证,这就是id。而由于要标记的事物不同,所以给了id 不同的名字,用以区别。

进程pid和ppid

  • 系统在运行程序的时候会将其产生的每个进程都会起一个响亮的名字。而因为其进程的关联性就产生了pid和ppid。

  • 在程序运行后系统会为每一个进程,自动分配一个唯一的用来标识的整数,就像是给一个企业里正在工作的每一个员工一个工号,这就是pid(子进程)。

    -由于企业太大,工作的员工都是子承父业的,为了方便管理,将每个员工的父辈的pid 提取出来,给每个员工再打一个标记ppid(父进程),告诉别人他的父亲是谁。

进程的uid和euid

  • 系统不仅会为运行的进程标明父子关系,还会为进程标明部门的职位。即标明每个员工及其所属部门的权限,用于判断对文件的执行权限。

  • 简而言之,进程中的uid就是进程中文件的用户的id,标明文件的所有者。euid就是进程中文件的用户所属的组的id。它们的作用就是进程用于判断文件的执行权限。

  • 对于某文件,进程会将它的的执行权限分成文件拥有者、文件拥有者同组、其他用户三个级别,用户euid的作用就是在此体现的。系统会通过比较euid是属于文件的哪个组,从而决定进程拥有对该文件哪个级别的执行权限。

  • 一般情况下,进程uid和进程euid的运行等于运行这个进程的用户uid。就是一个员工属于那个财务部门,他就只有财务部的权限。

  • 万事皆有例外,可能有一个员工是刚来的就不会给他本部门的全部的权限,也可能该员工是本部门的老大,却是其他其他部门的一员,这样他权限就不同了。

用户的uid和gid

  • 简单的说,uid就是我们创建用户时系统会为其提供的身份证号码。gid就是我们创建的组群的证件号。

  • 如果建立用户时,不指明所创建的用户属于哪个组,系统会自动建立一个跟用户名同名的组。

Logo

更多推荐