allowed-origins是unattended-upgrades的白名单核心,控制哪些源的包可自动安装;默认仅放行-security源的main/restricted组件,-updates和esm源需显式添加且必须带双引号,内核升级还需额外配置或启用hwe。

unattended-upgrades 的 Allowed-Origins 是白名单核心
Ubuntu 的“自动升级白名单”不是独立功能,而是由 unattended-upgrades 通过 /etc/apt/apt.conf.d/50unattended-upgrades 中的 Allowed-Origins 控制——它决定哪些源里的包能被自动安装。默认只放行 -security 源的 main 和 restricted 组件,像内核、cloud-init、systemd 等关键更新常在 -updates 源里,不显式添加就会被跳过。
常见错误现象:配置了 20auto-upgrades 且服务已启用,但 sudo unattended-upgrade --dry-run -d 显示 “No packages found that can be upgraded unattended”,就是白名单太窄导致的。
- 检查当前白名单:
grep -v '^//' /etc/apt/apt.conf.d/50unattended-upgrades | grep Origin - 要启用
-updates源的安全更新,取消注释并保留这行:"${distro_id}:${distro_codename}-updates"; - 若用 Ubuntu Pro(ESM),还需确保包含
"${distro_id}ESM:${distro_codename}";,否则 ESM 补丁不会进白名单 - 值必须是字符串格式(带双引号),写成
${distro_id}:${distro_codename}-updates(无引号)会导致整段配置被 apt 忽略
内核升级需单独放行,不能靠默认白名单
即使 -updates 已加入 Allowed-Origins,Ubuntu 默认仍禁止自动安装新内核——这是故意设计,防止重启后驱动不兼容或启动失败。生产环境里,NVIDIA 驱动、Docker 内核模块、定制 kernel module 都可能因此中断。
如果你确实需要自动内核升级(例如云主机或无外设服务器),必须额外配置:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 编辑
/etc/apt/apt.conf.d/50unattended-upgrades,找到Unattended-Upgrade::Kernel-Allow-Downgrades和Unattended-Upgrade::Kernel-Allowed-Versions相关块 - 更稳妥的做法是启用 HWE(Hardware Enablement Stack)元包:
sudo apt install --install-recommends linux-generic-hwe-$(lsb_release -sr),它会把内核更新绑定到-updates源,从而被白名单覆盖 - 务必配合保留旧内核:
sudo sed -i 's/GRUB_DISABLE_OLD_KERNEL=true/GRUB_DISABLE_OLD_KERNEL=false/' /etc/default/grub && sudo update-grub,否则自动升级后重启可能直接无法回退
验证白名单是否生效的三步法
改完配置别急着等明天,用命令立刻验证白名单是否真起作用。重点看“哪些包被识别为可升级”,而不是只查服务状态。
- 强制刷新源信息:
sudo apt update - 模拟运行并输出详情:
sudo unattended-upgrade --dry-run -d 2>&1 | grep -A5 "Packages that will be upgraded"。如果有输出,说明白名单已捕获到候选包;如果为空,回到上一步检查Allowed-Origins是否拼写正确、引号是否缺失 - 确认实际升级行为:
sudo systemctl status unattended-upgrades查服务是否 active;再查日志:sudo journalctl -u unattended-upgrades -n 50 --no-pager,留意 “Allowed origins” 和 “Installing packages” 行 - 注意:
--dry-run不下载 deb 包,但会触发源匹配逻辑,是最轻量的验证方式
白名单和防火墙白名单完全无关
别被“白名单”这个词误导——unattended-upgrades 的白名单管的是软件源(origin),不是 IP 或端口。你在 /etc/hosts.allow 或 ufw 里配的 IP 白名单,对系统自动升级毫无影响。有人试图在 hosts.allow 里加 unattended-upgrades:127.0.0.1,结果当然没用。
真正需要隔离网络访问的环节只有两个:
- APT 下载阶段:若服务器走代理或受限网络,需在
/etc/apt/apt.conf.d/90curldownloads里配置Acquire::https::Proxy - 通知邮件发送:如果启用了邮件提醒(
Unattended-Upgrade::Mail),确保 SMTP 出站(通常是 25/465/587)在防火墙或云安全组中放行
白名单配置最易被忽略的点:它只控制“允许装什么”,不控制“什么时候装”。20auto-upgrades 里的 APT::Periodic::Unattended-Upgrade 才决定是否执行,而 10periodic 决定多久 apt update 一次——三者缺一不可,但各自职责完全不同。










