DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

进程pid和ppid、进程的uid和euid、用户的uid和gid、文件的创建者和所有者的关系辨析


1、当我们创建用户时,由我们为新建用户命名和设置密码,同时系统会为我们所创建的用户名关联一个号,就是所谓的用户uid。同时我们还可以把这个用户放到某个用户群里,类似的,用户群也可以我们手工建立。如果建立用户时,不指明所建的用户属于哪个用户群,则系统会自动建立一个跟用户名同名的用户群。不管手工建立还是自动建立,系统都会为用户群关联一个号,这个号称之为gid。用户uid所属的群的gid就是用户的gid。


2、系统在运行每个进程时都会关联几个号,分别为pid、ppid、uid、euid。进程的pid为运行进程时,系统自动分配的,用于唯一标识此进程的一个整数。进程的ppid就是进程的父进程的pid。同时,系统还会为运行的进程分配一个进程uid和进程euid,用于判断文件的执行权限。一般情况下,进程uid和进程euid等于运行这个进程的用户uid。对于某文件,它的执行权限分成文件拥有者、文件拥有者同组、其他用户三组,从而分成三个级别。用户euid的作用就是于此。通过比较euid是属于文件的哪个组,从而决定属于文件执行权限的哪个级别,那么这个进程就拥有对该文件什么级别的执行权限。另外,如果可执行文件的setuid位有效,则运行这个可执行文件时,进程uid还是用户的uid,而进程euid则会暂时被修改成该可执行文件的所有者用户uid,直到该进程结束。一句话,在某个进程中,进程pid和ppid是唯一标识该进程的,它不会改变,而进程uid与运行该进程的用户uid相同,进程euid则与uid相同,只有运行设置了setuid位的文件时才会把euid改为这个文件的所有者用户uid。进程gid和进程egid则类似。


文件的属性:
  15 14 13 12       11    10    9       8 7 6 5 4 3 2 1 0
   文件类型     setuid setgid sticky    R W X R W X R W X
#define __S_IFMT 0170000  0开头表示是八进制,这个位决定了文件类型
#define __S_IFDIR 0040000   目录文件
#define __S_IFCHR 0020000   字符设备文件
。。。。。。。
#define S_IRUSR  文件的所有者可读
#define S_IWUSR  文件的所有者可写
#define S_IXUSR  文件的所有者可执行
#define S_IRGRP  文件的所有者的同组用户可读
#define S_IROTH  文件的其他用户可读

在shell中执行ls -l命令,则会显示如下:
drwxr-xr-x 2 root root 652 Jul 31 2006 /root/hello
d表示文件,后面几个表示文件所有者、同组用户、其他用户的执行权限,文件数量,文件所有者,文件创建者(注意,RHEL这项是文件所有群),文件大小,日期,文件所在路径
du -sh xxx可以测量xxx文件或目录所占内存大小。

posted on   DoubleLi  阅读(757)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2015-11-03 Makefile 使用总结
2014-11-03 推荐一些socket工具,TCP、UDP调试、抓包工具 推荐一些socket工具,TCP、UDP调试、抓包工具
点击右上角即可分享
微信分享提示