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的目录结构
如图,图中数字构成的目录便是进程的uid,有多少目录,就表示当前有多少进程在运行
proc/$pid
通过/proc/$pid/
来获取指定进程的信息,例如内存映射、CPU绑定信息等等。
self
在proc中,想读取到信息,知道进程对应的pid是前提,但一般情况下我们无法得知进程的uid
self目标便是linux为了方便使用而设置的一个line(链接)目录,它可以让我们简单的查看当前正在运行的进程信息
为了容易理解,接下来的部分全部用self来说明
进程相关的目录于文件详解
cmdline
cmdline 说明了当前进程具体执行的命令
目录 cwd
cwd目录表示了当前进程所在的具体位置,即路径,是一个指向路径的符号链接
这里用1进程容易理解
1进程,即根目录进程,cwd
在当前进程文件夹下ls cwd ,可以达到cd 【指向目录】命令的同样的效果
目录 fd
fd目录包含着当前进程打开的每一个文件的描述符,并可以通过描述符查看对应文件的具体内容
图中 数字即为描述符,指向是具体打开的文件目录
查看具体内容
cat /proc/self/fd/14
截不全了,就这样吧
注意
在proc目录下,对目录和文件的查看需使用对应的命令,目录是ls,文件为cat,more,和操作其他目录相同
如
ls -l fd/14
more fd/14
如上图,不重复粘贴了
目录 exe
exe目录告诉我们该进程 运行(可执行)文件 的具体路径(完成路径)
与cwd不同,cwd专指目标指定进程环境的运行目录
而exe为指定进程的可执行文件的完整路径
看看对比
environ
environ文件说明了当前进程运行的具体环境,即环境变量列表
变量彼此间用空字符(NULL)隔开,变量用大写字母表示,其值用小写字母表示。可以通过查看environ目录来获取指定进程的环境变量信息:
cat /proc/self/environ