Autoruns 1.0 有了 Linux 版:开机自启项终于能一次查清

摘要

微软为 Autoruns 推出 Linux 版 1.0,用 Rust 写成,把 systemd、cron、桌面自启动和浏览器扩展一次列清,全程只读不改动被扫描的系统。

推荐
软件名称
Autoruns
版本
1
收费
免费
开源
开源
操作系统
WindowsLinux
更新时间
2026-11-06 23:00
Windows 上查开机自启动,Autoruns 大概是绕不开的一个名字。11 月 5 日,微软把它搬到了 Linux,版本号从 14.x 归零重来,写成 1.0。

Linux 的自启动本来就散

Windows 的自启动位置虽然多,但大体都在注册表和几个固定目录里,一套工具能一次扫完。Linux 不是这样:系统服务走 systemd,老系统还留着 SysV 脚本,定时任务散在 cron 与 anacron,图形界面的自启动写在 XDG 的 autostart 目录,shell 登录时又要读 .profile 一类的文件,再加上浏览器扩展、udev 规则、fstab 里的挂载选项,没有哪一处能统管全部。想弄清楚「开机时到底启动了些什么」,过去只能一个地方一个地方翻。

它把散落的位置收进一张表

Autoruns for Linux 用 Rust 写成,是个命令行工具,采用 MIT 许可证。它把上面那些位置的配置读出来,按事件、激活机制、目标、主体、有效状态、证据来源逐行列清楚。覆盖面包括 XDG 桌面自启动与系统级、用户级的 shell 启动文件,systemd 的系统与用户服务、timer、socket、path、device、mount 和 automount,连优先级、mask、drop-in、依赖、模板实例与各阶段条件都算在内,还有系统与用户级的 cron、anacron 和 run-parts 任务,以及 modules-load 配置、boot 与 SysV 钩子、动态加载器的 preload 与搜索路径、alternatives 和受支持的网络钩子目录。

浏览器的部分单独处理:Chromium 系与 Firefox 的扩展会跨安装、用户与 profile 列出,也包括企业策略、外部注册、常驻的 load-extension 启动器与原生消息宿主。设备与介质一侧覆盖 udev 的可执行动作与 unit、fstab 里的 x-systemd 关系、autofs 程序映射,以及已挂载介质上的 autorun 优先级。办公套件那边收了 LibreOffice 与 OpenOffice 的扩展包、UNO 组件,还有事件与任务配置。

默认只看登录项,全扫要加一个参数

直接运行等价于查看登录启动项,与 Windows 版的默认行为对齐。要一次扫完已经实现的 Linux 类别,加上 -a 与通配符;也可以按 b、h、i、k、l、n、o、s、t 逐个选,分别对应 boot 钩子、镜像劫持与 preload、浏览器集成、动态加载器、登录项、网络钩子、应用集成、服务与模块、定时任务。设备与挂载则用 device、mount 或 device-mount 这类具名选择器。

输出格式给了五种:CSV、TSV、JSON、XML 与对齐的表格,字段是同一套。最前面保留 12 列机器可读字段,后面接着事件、机制、主体、profile、激活者、目标与完整性说明,再接目标状态、目标是否存在、目标是否可执行。绝对路径的目标会在选定根目录内做检查,结论是存在、缺失或无法访问;相对命令则标为未解析。这里有个细节值得留意:注册状态与目标状态是分开的,一条被启用但文件已经没了的条目,仍然显示为启用,同时标出目标缺失。

它只读,不动手

这类工具最怕手重。Autoruns for Linux 明确只做静态文件检查:不执行找到的命令,不启动 unit,不合成设备事件,不挂载介质,也不加载扩展。文本源与 XPI、OXT 元数据在读取时按单文件、成员数、单成员与累计解压量设了上限,目标文件的元数据只看不跑。运行时的服务状态它不去查询,离线根目录下也查不到,这一点在输出里有交代。

扫别人的系统也不用先开机

root 参数用于扫描另一套根目录,测试环境、已挂载的系统、容器与离线镜像都能用。这个路径在扫描前会被校验并规范化,在 Linux 上走 openat2 的 RESOLVE_IN_ROOT 与 RESOLVE_NO_MAGICLINKS;如果内核不支持这套设施,它会报一条部分扫描的诊断,并要求挂载的镜像在回退期间保持只读。退出码也做了区分:0 表示所选静态适配器跑完,1 是输出失败,2 是参数或根目录错误,3 表示部分结果。

边界的处理方式有点意思

Windows 版的信任选项与 VirusTotal 查询在 Linux 版没有对应物,工具没有假装支持,而是直接以退出码 2 拒绝;Windows 专有的类别与静态适配器覆盖不到的部分,会输出明确的 unsupported-scope 行,而不是硬映射成某种看起来合理的类别。d 这个选择器保留了它在 Windows 版里的兼容含义,不会被悄悄改指设备。

这种「做不到就说做不到」的处理,对一个要给排查结论当依据的工具来说,比多支持几个类别更重要。自启动排查最常见的误判,恰恰是把查不到当成没有。

谁会用得上

最直接的是运维:机器开机越来越慢,或者怀疑有东西在偷偷常驻,一份把 systemd、cron、桌面自启动、浏览器扩展摆在一起的清单,比逐个目录翻要快得多。安全与取证场景也合适,root 参数能直接对着挂载的镜像或容器根文件系统扫,不必先把那套系统启动起来。做发行版裁剪或镜像瘦身的人,也可以拿它当基线,看自带的镜像里究竟配了多少会自动跑起来的东西。

Windows 版十几年的积累不会平移到 Linux,机制本来就不同。但「把自启动这件事一次看清楚」的思路是通用的,1.0 的覆盖广度至少说明微软这次不是随手做了个移植。

Autoruns 到 Linux 上,最值钱的不是它认得多少种自启动位置,而是它坚持只读、把不确定的地方明确标出来——排查工具的可信度,往往由它承认的边界决定。
Autoruns下载地址
支持的操作系统: Windows Linux