进程工作目录与根目录
/proc/<PID>/cwd 指向进程当前的工作目录,/proc/<PID>/root 指向该进程眼中的根目录。前者用于回答「这个程序是从哪个目录跑的」,是找出木马落地目录最直接的方法;后者用于识别 chroot、容器与挂载命名空间——当它与系统根目录不一致时,说明这个进程看到的是另一套文件系统视图。两者结合 exe 与 cmdline,就能构成一份完整的进程立足点画像。
基本信息
| cwd | 进程当前工作目录,随进程内的目录切换而变化 |
|---|---|
| root | 进程看到的根目录,chroot 与容器场景下与系统根不同 |
| exe | 可执行文件路径,已删除时显示 (deleted) |
| cmdline | 启动命令行,以空字符分隔 |
| environ | 环境变量,含路径与配置线索 |
| 权限要求 | 查看其他用户的进程需 root,否则链接不可读 |
典型使用场景
- 找出木马二进制的落地目录与同目录下的其他文件
- 确认进程是否运行在容器或 chroot 环境中
- 判断某进程是否在业务目录下运行,识别异常的临时目录运行
- 为进程画像补全「它在哪里运行」这一维度
- 定位被删除但仍占用目录的进程
查看进程立足点
查看进程立足点
sudo ls -l /proc/1234/cwd /proc/1234/root /proc/1234/exe # 三项一起看
sudo readlink -f /proc/1234/cwd # 取真实路径
sudo cat /proc/1234/cmdline | xargs -0 echo # 启动命令行
sudo ls -la /proc/1234/root/tmp | head -n 10 # 该进程眼中的 /tmp
sudo ls -l /proc/1234/ns/mnt # 挂载命名空间标识
sudo readlink /proc/1234/cwd # 对比 cwd 与系统路径是否一致/proc/PID 条目读法
| 条目 | 含义 | 异常信号 |
|---|---|---|
| cwd | 当前工作目录 | 指向临时目录或已删除目录 |
| root | 进程眼中的根目录 | 与 / 不一致,说明 chroot 或容器命名空间 |
| exe | 可执行文件路径 | 带 (deleted) 或位于可写目录 |
| cmdline | 启动命令行 | 含下载地址、编码内容或非常规参数 |
| environ | 环境变量 | 出现未在配置中登记的地址或凭据 |
| ns 下的命名空间链接 | 进程所属命名空间 | 与业务预期不符,说明进程来自其他命名空间 |
cwd 与 root 不一致通常意味着 chroot、容器或挂载命名空间:这时路径判断要以该进程的 root 为基准,直接按系统路径去找文件会找不到,得出错误结论。
这些信息只在进程存活期间存在:进程一退出,/proc/<PID> 目录立即消失。所以发现可疑进程后应先复制目录信息与样本,再考虑终止。