首页/安全/取证与溯源速查/SysV init 脚本残留排查
Linux 取证135 条

SysV init 脚本残留排查

/etc/init.d/ 下的 SysV 脚本在 systemd 发行版中仍可能被调用,新出现的脚本或其链接是排查启动项时容易漏掉的一层。

取证与溯源速查安全更新于 2026-10-13

SysV 脚本为何还要查

在已经切换到 systemd 的发行版上,/etc/init.d/ 下的 SysV 脚本并没有自动失效:systemd 通过 sysv-generator 为这些脚本生成兼容单元,只要被 enable 或存在依赖关系就可能被拉起。排查启动项时,除了看 systemd 单元还要看这一层残留。新出现的脚本、或指向异常目标的符号链接,往往对应一次持久化动作,这也是启动项排查最容易漏掉的一层。

基本信息

目录/etc/init.d/ 与 /etc/rc*.d/
运行机制sysv-generator 生成兼容单元后由 systemd 调用
检查重点脚本文件 mtime、符号链接目标、链接新增时间
相关命令chkconfig --list、systemctl list-unit-files

典型使用场景

  • 排查主机启动项,确认是否存在 systemd 之外的自启脚本
  • 发现某个陌生服务在开机后被拉起,回溯其注册方式
  • 对比备份中的 /etc/init.d/ 目录,找出新增或改动文件
  • 检查运行级别目录中指向临时目录的异常链接
  • 评估老旧脚本与现代单元并存带来的实际执行顺序

排查命令

排查命令
ls -lt --time-style=long-iso /etc/init.d/ | head        # 按时间列出脚本,新的在上
find /etc/rc3.d /etc/rc5.d -type l -newermt '-30 days' 2>/dev/null   # 近期新增的链接
readlink -f /etc/rc3.d/S99redis                          # 查看链接真实指向
chkconfig --list 2>/dev/null | head -20                  # 查看运行级别启用状态
systemctl list-unit-files --type=service | head -20      # 与现代单元对照

运行级别链接读法

命名形式含义判读要点
S 开头启动时执行,编号决定先后编号改动会改变启动顺序
K 开头停止时执行异常 K 链接可能阻止服务停止
指向异常路径链接目标不在 /etc/init.d/常见于临时目录投放的脚本
链接 mtime 新链接本身近期被创建只改链接名不会改动目标脚本时间
符号链接名以 S 开头表示启动、K 开头表示停止,编号决定执行顺序;链接改名不会改变目标脚本的时间戳,判断时要同时看目标文件与链接本身。
文件存在不等于会被调用:脚本缺少执行位、链接未被 enable 或对应运行级别未使用,都不会在开机时触发;判断启动项时要结合链接状态与实际使用的运行级别。

易错点

  • 只查 sysv 脚本不看 rc 链接,改名后的重复注册会被漏掉
  • 只检查 rc3.d 一个运行级别,其他级别的重复链接仍然生效
  • 改动启动脚本未先备份,回滚时无法恢复原顺序
  • 把发行版自带脚本当成可疑项,未与包管理文件清单比对

数据来源与参考

  • SysV init 文档(init.d 惯例)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌