首页/安全/安全加固速查/服务禁用与屏蔽(disable/mask 的区别)
服务与端口收敛50 条

服务禁用与屏蔽(disable/mask 的区别)

disable 取消自启但可被依赖拉起;mask 用 /dev/null 链接彻底封死。收敛时按“是否需要兜底防护”选择。

安全加固速查安全更新于 2026-10-13

disable 与 mask 的区别

在 systemd 里,disable 只是取消开机自启,服务仍可被依赖关系或人工操作拉起;mask 则把服务单元链接到 /dev/null,彻底封死启动路径,连依赖它拉起的请求也会失败。收敛服务时按“是否需要兜底防护”选择:只是不想开机自启用 disable,希望任何路径都启动不了用 mask。对已被其它单元依赖的服务做 mask 之前,先看依赖树。

基本信息

适用平台Linux(systemd:RHEL 7+、Debian 8+、Ubuntu 16.04+)
三个动作停止(stop)、取消自启(disable)、彻底屏蔽(mask)
状态查询systemctl is-enabled、is-active、list-dependencies
恢复方式unmask 后再 enable --now
基线无用服务已停且防止被拉起

典型使用场景

  • 端口收敛:停掉并屏蔽不需要的监听服务
  • 合规整改:关闭测评点名的非必需服务
  • 防止复活:屏蔽容易被依赖拉起或脚本自动启动的服务
  • 排障隔离:临时屏蔽有问题的服务,避免反复重启
  • 变更准备:先 stop 观察,再决定 disable 或 mask

停用与屏蔽

停用与屏蔽
systemctl stop cups                         # 先停,观察影响
systemctl is-active cups                     # 确认已停止
systemctl disable --now avahi-daemon         # 取消自启并立即停止
systemctl mask cups                          # 彻底屏蔽,防止被拉起
systemctl is-enabled cups                    # 预期输出 masked
systemctl list-dependencies cups | head -10  # 屏蔽前确认有无依赖方
systemctl unmask cups && systemctl enable --now cups   # 需要时恢复

状态读法

状态/命令含义注意点
enabled开机自启服务仍可被依赖拉起
disabled不自启人工或依赖仍可启动
masked被屏蔽,无法启动依赖它的单元也会失败
is-active当前运行状态与是否自启是两件事,需分别确认
list-dependencies查看依赖关系屏蔽前必看,避免连锁故障
推荐处理顺序是 stop → disable → mask:先用 stop 验证影响面,确认无问题再固化,避免一次性把服务彻底封死。

落地要点

  • 对已被依赖的服务 mask 会导致依赖单元启动失败,先用 list-dependencies 确认
  • 重装或升级软件包可能重建被 mask 的单元,变更后复查 is-enabled
  • 把屏蔽动作写进变更单并注明恢复命令,便于快速回滚
  • 容器或最小化系统中部分单元不存在,核查脚本要能容忍缺失
  • 屏蔽后复查监听端口,确认服务确实不再监听
屏蔽服务属于变更操作:在远程会话中执行前确认不会影响当前管理通道(例如屏蔽网络相关服务)。

易错点

  • 直接 mask 被依赖的服务:依赖单元启动失败,故障现象与屏蔽动作看似无关
  • 只 disable 不 stop:本次运行仍在监听端口,收敛效果没达成
  • 升级软件包后未复查:被 mask 的单元被重建,服务又回来了
  • 没有记录恢复命令:需要临时恢复时现场翻文档,延长处置时间

数据来源与参考

  • systemctl(1) 手册:mask 语义
  • CIS Linux Benchmark:服务禁用条目

相关工具

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