Ubuntu 22.04 中禁用 `unattended-upgrades` 完全指南

Ubuntu 22.04 中禁用 unattended-upgrades 完全指南

📌 什么是 unattended-upgrades

unattended-upgrades 是 Ubuntu 系统默认预装的自动更新工具,主要用于自动下载并安装安全更新(如系统漏洞修复、关键组件补丁),无需用户手动干预。其设计目的是提升系统安全性,但在部分场景下(如服务器稳定运行、测试环境控制、带宽受限等),用户可能需要禁用该功能。

⚠️ 禁用前的重要提醒

  • 禁用自动更新后,系统将不再自动获取安全补丁,需手动定期执行更新(推荐 sudo apt update && sudo apt upgrade -y),否则可能面临安全风险。
  • 以下方法适用于 Ubuntu 22.04(基于 Debian 11 架构),其他版本可能略有差异。
  • 操作前建议备份关键配置文件(如 /etc/apt/apt.conf.d/50unattended-upgrades)。

🔍 先检查 unattended-upgrades 状态

在禁用前,建议先确认当前是否启用了自动更新,避免无效操作。

方法 1:查看服务运行状态

sudo systemctl status unattended-upgrades 
  • 若输出含 active (running),表示服务正在运行;
  • 若含 inactive (dead),表示已停止(可能已被禁用)。

方法 2:检查配置文件状态

grep -r "Unattended-Upgrade" /etc/apt/apt.conf.d/ 
  • 若看到 APT::Periodic::Unattended-Upgrade "1";,表示启用自动更新;
  • 若为 "0",表示已禁用。

🛑 禁用 unattended-upgrades 的场景与方法

场景 1:临时停止服务(立即生效,重启后恢复)

适用于临时需要阻止自动更新运行(如正在进行系统测试,避免更新打断流程),重启后服务会自动恢复。

✅ 操作步骤:

验证是否停止:

sudo systemctl status unattended-upgrades # 应显示 `inactive (dead)`

停止正在运行的服务:

sudo systemctl stop unattended-upgrades 

💡 说明:此方法仅停止当前运行的服务,不影响开机自启,系统重启后服务会重新启动。

场景 2:永久禁用服务(禁止开机自启)

适用于长期不需要自动更新,希望彻底阻止服务启动(即使重启系统也不会运行)。

✅ 操作步骤:

验证禁用结果:

sudo systemctl is-enabled unattended-upgrades # 输出 `disabled` 表示成功

禁用开机自启:

sudo systemctl disable unattended-upgrades 

停止当前服务(若正在运行):

sudo systemctl stop unattended-upgrades 

💡 说明:disable 仅取消开机自启,若需临时启动服务,可执行 sudo systemctl start unattended-upgrades

场景 3:通过配置文件禁用自动更新

unattended-upgrades 的核心配置文件为 /etc/apt/apt.conf.d/50unattended-upgrades/etc/apt/apt.conf.d/20auto-upgrades,通过修改配置可从根源上关闭自动更新逻辑。

子场景 3.1:修改自动更新触发周期

20auto-upgrades 控制更新触发频率,将其设为 0 可禁用自动触发。

✅ 操作步骤:

  1. Ctrl+O 保存,Ctrl+X 退出。

将内容修改为(关键是把 Unattended-Upgrade 设为 0):

APT::Periodic::Update-Package-Lists "1"; # 仍每天更新软件源列表(可选设为0) APT::Periodic::Download-Upgradeable-Packages "0"; # 不自动下载更新包 APT::Periodic::AutocleanInterval "7"; # 保留7天内的安装包(可选设为0关闭) APT::Periodic::Unattended-Upgrade "0"; # 禁用自动更新(核心) 

编辑配置文件:

sudonano /etc/apt/apt.conf.d/20auto-upgrades 
子场景 3.2:禁用特定类型的自动更新

若只想禁用安全更新以外的自动更新(如普通软件更新),可修改 50unattended-upgrades 限制更新源。

✅ 操作步骤:

  1. 若想完全禁用所有自动更新,可直接清空 Allowed-Origins 列表。

注释掉不需要自动更新的源(在行首加 //),例如仅保留安全更新:

// 仅保留安全更新源,注释其他源 Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; # 安全更新(保留) // "${distro_id}:${distro_codename}-updates"; # 普通更新(禁用) // "${distro_id}:${distro_codename}-proposed"; # 测试更新(禁用) // "${distro_id}:${distro_codename}-backports"; # 回溯更新(禁用) }; 

编辑配置文件:

sudonano /etc/apt/apt.conf.d/50unattended-upgrades 

场景 4:通过图形化工具禁用(适合桌面用户)

Ubuntu 桌面版可通过「软件和更新」图形界面配置自动更新,操作更直观。

✅ 操作步骤:

  1. 打开「软件和更新」:
    • 方式 1:按下 Win 键,搜索 Software & Updates 并打开;
    • 方式 2:终端执行 sudo software-properties-gtk
  2. 切换到「更新」标签页(Updates):
  3. 配置「自动更新」选项:
    • Automatically check for updates 下拉菜单中选择 Never(从不检查更新);
    • 或在 When there are security updates 中选择 Display immediately(仅通知,不自动安装)。
  4. 点击「关闭」,系统会提示重新加载配置,选择「重新加载」即可。

场景 5:彻底卸载 unattended-upgrades(不推荐)

若确认永远不需要该工具,可直接卸载(但可能影响依赖它的系统组件,谨慎操作)。

✅ 操作步骤:

清理残留配置:

sudoapt autoremove -y &&sudoapt autoclean 

卸载软件包:

sudoapt purge unattended-upgrades -y 

⚠️ 风险提示:部分系统工具(如 update-manager)可能依赖 unattended-upgrades,卸载可能导致异常,建议优先选择「禁用服务」而非「卸载」。

🔄 如何恢复 unattended-upgrades

若之后想重新启用自动更新,可根据禁用方式反向操作:

恢复服务自启

sudo systemctl enable unattended-upgrades # 开启开机自启sudo systemctl start unattended-upgrades # 立即启动服务

恢复配置文件

  1. 恢复 50unattended-upgrades 中的更新源(移除行首 // 注释)。

编辑 20auto-upgrades 恢复默认值:

sudonano /etc/apt/apt.conf.d/20auto-upgrades 

恢复为:

APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "7"; APT::Periodic::Unattended-Upgrade "1"; 

图形界面恢复

在「软件和更新」→「更新」中,将 Automatically check for updates 设为 Daily(每天),并在 When there are security updates 中选择 Download and install automatically

❓ 常见问题解答

Q1:禁用后如何手动更新系统?

执行以下命令手动安装所有更新(包括安全更新):

sudoapt update # 更新软件源列表sudoapt upgrade -y # 安装可用更新sudoapt dist-upgrade -y # 处理依赖关系变更(可选)sudoapt autoremove -y # 清理无用依赖

Q2:禁用后系统会提示更新吗?

  • 若仅禁用 unattended-upgrades 服务,桌面版仍会通过「软件更新器」提示更新(需手动确认安装);
  • 若通过图形界面设置为「Never check for updates」,则不会提示,需手动执行 apt update 检查。

Q3:服务器环境推荐禁用吗?

服务器对稳定性要求高,自动更新可能导致服务重启或配置冲突,建议禁用自动安装,但需定期手动更新(如每周一次),并在更新前备份数据。

Q4:如何确认禁用已生效?

  1. 检查服务状态:sudo systemctl status unattended-upgrades(应为 inactive);
  2. 检查配置:grep "Unattended-Upgrade" /etc/apt/apt.conf.d/20auto-upgrades(应为 "0");
  3. 观察日志(禁用后不应有新的更新记录):sudo tail -f /var/log/unattended-upgrades/unattended-upgrades.log

📝 总结

unattended-upgrades 是 Ubuntu 保障安全的重要工具,禁用需谨慎。根据需求选择合适的方式:临时禁用用 systemctl stop,长期禁用用 systemctl disable 配合配置文件修改,桌面用户可通过图形界面操作。禁用后务必定期手动更新系统,避免安全漏洞。

Read more

Docker 从入门到进阶:各平台安装与国内镜像源配置全攻略

Docker 作为当今最流行的容器化技术,很多软件与服务都优先提供 Docker 版本,掌握它是每一名技术爱好者的必修课,然而,由于网络环境的原因,国内用户在使用 Docker 时常常遇到镜像拉取缓慢甚至失败的问题。 今天我们来详细介绍如何在各个主流平台上安装 Docker,并配置国内镜像源,让你的 Docker 使用体验原地起飞! 为什么要配置镜像源? 在开始之前,先了解为什么需要配置国内镜像源: *  速度提升 - 从国内镜像源下载速度可达 10 MB/s 以上,而官方源可能只有几十 KB/s *  稳定性好 - 避免连接超时、下载中断等问题 *  节省时间 - 大幅缩短镜像拉取时间,提高效率 Linux 平台安装与配置 Ubuntu/Debian 系统 步骤 1:卸载旧版本(如有) sudo apt-get remove

By Ne0inhk
【Linux】Linux 系统的目录结构详解

【Linux】Linux 系统的目录结构详解

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Linux这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 【Linux】Linux 系统的目录结构详解 📁 * 1. Linux 目录结构概述 🌐 * 2. 根目录 (/) —— 系统的起点 🚩 * 3. /bin —— 基本命令的家 🛠️ * 4. /sbin —— 系统管理员的工具箱 🛠️ * 5. /lib 和 /lib64 —— 系统库的家园 📦 * 6. /etc —— 系统配置的中枢 📝 * 7. /home —— 用户的私人天地 🏠 * 8. /usr —— 用户程序的宝库 📚 * 9. /var —— 变化的数据中心 🔄 * 10. /dev —— 设备的入口 🖥️ * 11. /proc —— 进程的虚拟文件系统

By Ne0inhk

OpenClaw 从入门到实战:安装、配置与自动化全指南

目录 * OpenClaw 从入门到实战:安装、配置与自动化全指南 * 一、OpenClaw 是什么? * 二、安装与启动(最小可用) * 三、5 个核心概念(先理解再进阶) * 四、三个高频落地场景 * 场景 1:文档自动化 * 场景 2:脚本与日志处理 * 场景 3:网页流程半自动 * 五、配置建议(避免踩坑) * 六、把 OpenClaw 用成“自动化同事” * 1)Heartbeat:轻量巡检 * 2)Cron:精准调度 * 3)Sub-agent:并行提效 * 4)Memory:长期复利 * 七、可复制工作流模板(内容生产) * 八、

By Ne0inhk
Docker 安装及基础操作

Docker 安装及基础操作

Docker 安装及基础操作 * 一、Docker 安装 * ① Windows 下安装 Docker * ② Linux 下安装 Docker * ③ Mac 下安装 Docker * 二、基本指令介绍 * (0)配置Docker 的镜像站 * (1)拉取镜像 * (2)查看所有 docker 镜像 * (3)删除下载的镜像 * (4)创建并运行一个容器 * ① -v 挂载卷 * ② -e 往容器里面传递环境变量 * (5)查看 docker 容器的进程状态 * (6)启动/停止一个容器 * (7) 删除容器 * (8)进入容器内部,用于临时调试一个容器 * (9)配置容器在停止时的重启策略 * (10)查看容器的日志 * (11)

By Ne0inhk