Linux系统之proc目录解析


linux系统之proc目录

在谈proc目录之前,我觉得有必要提一下一个常见的概念

id , uid , pid , ppid

id

id是最常见的名词,是对所有id的一个统称,这个没什么好谈的

uid

uid在linux系统中,表示用户的id,即我们登录的用户,包括root用户,他们的“身份标识”便是uid

pid

pid是在proc目录的相关知识中最重要的一个概念,linux系统中用它表示进程的id,每个正在运行的进程都有一个独一无二的pid

ppid

ppid在实际中应用很少,定义我直接复制,这里不想多谈

详情见:https://zhidao.baidu.com/question/750271241282834652.html

  • PPID Product Part Identification 产品料号识别码,便于产品追踪,并含有部分信息,一般的使用形式是产品包装上贴的一维码或二维码
  • 计算机中代表当前进程的父进程ID;Payload protocol identifier,在S1AP通信中标识此服务ID

用途和功能

介绍完pid的概念,我们来看看proc目录具体有什么,做什么

定义

proc目录是由linux系统提供的一种文件系统,用来在运行时访问内核内部数据结构、改变内核设置的机制

proc只存在于内容中,而不进入外存

proc是用于访问、控制linux内核数据的一个接口

用途

proc主要用于查询linux系统的内核数据:进程信息

它可以告诉我们每个进程的具体运行情况

在ctf中,可以用它来读取一些信息

proc的目录结构

image-20210625203556795

如图,图中数字构成的目录便是进程的uid,有多少目录,就表示当前有多少进程在运行

proc/$pid

通过/proc/$pid/来获取指定进程的信息,例如内存映射、CPU绑定信息等等。

self

在proc中,想读取到信息,知道进程对应的pid是前提,但一般情况下我们无法得知进程的uid

self目标便是linux为了方便使用而设置的一个line(链接)目录,它可以让我们简单的查看当前正在运行的进程信息

image-20210625203808386

为了容易理解,接下来的部分全部用self来说明

进程相关的目录于文件详解

cmdline

cmdline 说明了当前进程具体执行的命令

image-20210625204241242

目录 cwd

cwd目录表示了当前进程所在的具体位置,即路径,是一个指向路径的符号链接

image-20210625204556261

这里用1进程容易理解

image-20210625204642630

1进程,即根目录进程,cwd

在当前进程文件夹下ls cwd ,可以达到cd 【指向目录】命令的同样的效果

image-20210625204844039

目录 fd

fd目录包含着当前进程打开的每一个文件的描述符,并可以通过描述符查看对应文件的具体内容

image-20210625205245377

图中 数字即为描述符,指向是具体打开的文件目录

查看具体内容

cat /proc/self/fd/14

image-20210625210025442

截不全了,就这样吧

注意

在proc目录下,对目录和文件的查看需使用对应的命令,目录是ls,文件为cat,more,和操作其他目录相同

ls -l fd/14

image-20210625210201286

more fd/14

如上图,不重复粘贴了

目录 exe

exe目录告诉我们该进程 运行(可执行)文件 的具体路径(完成路径)

image-20210625210430932

与cwd不同,cwd专指目标指定进程环境运行目录

而exe为指定进程可执行文件完整路径

看看对比

image-20210625210631411

environ

environ文件说明了当前进程运行的具体环境,即环境变量列表

变量彼此间用空字符(NULL)隔开,变量用大写字母表示,其值用小写字母表示。可以通过查看environ目录来获取指定进程环境变量信息:

cat /proc/self/environ

image-20210625211104917


文章作者: Atmujie
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Atmujie !
评论
  目录