首页/安全/应急响应速查/定位进程工作目录与根目录

定位进程工作目录与根目录

/proc/PID/cwd 与 /proc/PID/root 分别指向进程的工作目录与它眼里的根目录:快速找到木马落地目录,也能识别 chroot 类隐藏手法。

应急响应速查安全更新于 2026-10-13

进程工作目录与根目录

/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> 目录立即消失。所以发现可疑进程后应先复制目录信息与样本,再考虑终止。

易错点

  • 把 root 当真实根目录:在命名空间下它指向另一套挂载树,路径判断会整体错位
  • 进程退出后才去读取:/proc/<PID> 已消失,相关信息无法补取
  • 只看 exe 不看 cwd:落地目录与同目录文件往往通过 cwd 才能找到
  • 忽略 cmdline 为空的情况:有些进程会改写自己的命令行,此时要结合 exe 与 cwd 判断
  • 不使用 root 权限查看:其他用户的进程目录不可读,容易以为「进程没有工作目录」

数据来源与参考

  • man 5 proc(procfs 文档)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌