首页/安全/应急响应速查/检查 rc.local 与开机执行脚本

检查 rc.local 与开机执行脚本

传统但至今有效的开机自启点:rc.local 在多数发行版仍可启用,塞一行命令就能长期驻留。

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

传统但可用的开机自启点

rc.local 是传统但至今有效的开机自启入口:在多数发行版上仍可通过启用 rc-local 服务运行,往里塞一行命令就能长期驻留。

为什么容易被漏掉

正因为「过时」,不少巡检清单里已经删掉了这一项。检查时要同时看文件内容、执行权限与服务启用状态,三者缺一都不能下结论。

基本信息

文件/etc/rc.local(需可执行权限)
服务systemctl status rc-local
检查要点内容与权限位、服务状态一起看
现状部分发行版默认未启用该服务
同类入口/etc/rc.d 下的初始化脚本与 rc 目录
权限要求查看普通用户可行,修改需 root

典型使用场景

  • 排查传统开机自启入口是否被利用
  • 与 systemd 单元清点互补
  • 确认 rc.local 是否仍在生效
  • 清理后复验开机行为
  • 复盘时说明覆盖了哪些自启入口

检查 rc.local 状态

检查 rc.local 状态
ls -l /etc/rc.local 2>/dev/null
cat /etc/rc.local 2>/dev/null
systemctl status rc-local 2>/dev/null | head -n 15
systemctl is-enabled rc-local 2>/dev/null
wc -l /etc/rc.local 2>/dev/null

输出逐列读法

检查项含义正常/异常
权限位是否可执行无可执行位时不会运行,属无效配置
文件内容开机执行的命令出现下载、脚本或后台进程即为可疑
服务状态enabled 或 disabled需与文件是否存在一起判断
文件尾部exit 0 之后的行尾部追加是常见后门手法
文件存在但没有可执行权限时不会被执行:检查必须同时看权限位与服务状态,只凭文件存在下结论容易出错。
后门常写在文件尾部(exit 0 之后或最后几行):只读开头几行会漏掉,建议完整查看并统计行数后再做判断。

判断是否真正生效

  • 文件存在且具备可执行权限
  • rc-local 服务处于启用并正在运行的状态
  • 脚本内容中确实有会被执行的命令
  • 发行版提供的兼容单元正确指向该文件

发行版之间的差异

  • 部分发行版不再自带 rc-local 兼容单元,需要自行创建
  • 有的发行版把该文件放在 /etc/rc.d 下,路径要先确认
  • 启用方式各版本不同,操作前先查本机可用的做法
  • 判断以服务状态与实际执行结果为准,不只看文档描述

一并排查的自启入口

  • SysV init 脚本与 /etc/rc.d 目录
  • systemd 自定义单元与 timer
  • crontab 中的 @reboot 条目
  • 各用户的登录脚本与 profile 文件

易错点

  • 只看文件在不在:没有可执行权限就是摆设
  • 忽略 exit 0 之后的追加行:后门常写在文件尾部
  • 不看服务状态:文件存在但服务未启用,结论会出错
  • 只查传统路径不查 systemd:现代系统上同样的事情常由单元文件完成
  • 清理后不重启验证:是否仍被拉起没有结论

数据来源与参考

  • systemd rc-local 兼容服务文档

相关工具

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