普通网友 2025-12-25 01:55 采纳率: 98.6%
浏览 46
已采纳

如何启用Ubuntu Pro的ESM-Apps获取安全更新?

如何在Ubuntu 20.04 LTS系统上启用Ubuntu Pro的ESM-Apps以获取安全更新?我在运行`sudo ua status`时发现ESM-Apps处于未启用状态,尽管已通过`sudo pro attach `成功绑定Ubuntu Pro账户。尝试手动启用时提示“Unable to enable esm-apps: Contract does not allow”,这是否与订阅计划有关?此外,启用后如何验证第三方或旧版本软件包(如Redis、Nginx)能否正常接收来自ESM-Apps的安全补丁?是否需要调整APT源或执行额外配置?
  • 写回答

1条回答 默认 最新

  • 娟娟童装 2025-12-25 01:56
    关注

    1. 背景与问题概述

    在Ubuntu 20.04 LTS系统中,随着标准支持周期的结束(2025年4月),长期安全维护依赖于Ubuntu Pro提供的扩展安全维护(Extended Security Maintenance, ESM)功能。其中,ESM-Apps是专为第三方或旧版本应用提供持续安全更新的关键服务,涵盖如Redis、Nginx等广泛使用的开源软件。

    尽管用户已通过sudo pro attach <token>成功绑定Ubuntu Pro账户,但在执行sudo ua status时发现ESM-Apps仍处于“未启用”状态。尝试手动启用时提示:Unable to enable esm-apps: Contract does not allow,这表明当前订阅合同并未授权该服务。

    2. 深度解析:为何无法启用ESM-Apps?

    • 订阅计划限制:并非所有Ubuntu Pro订阅都默认包含ESM-Apps权限。例如,个人免费账户通常仅支持ESM-Infra(内核及基础系统包),而不包括应用层(apps)的安全补丁。
    • 合同范围(Contract Entitlements):每个Ubuntu Pro令牌关联一个JSON格式的合同定义,明确列出允许启用的服务。可通过以下命令查看详细信息:
    sudo pro status --verbose

    输出中会显示类似字段:

    ServiceEntitledEnabled
    esm-infrayesyes
    esm-appsnono
    fipsnono

    esm-appsEntitledno,则说明当前订阅不包含此功能。

    3. 解决方案路径分析

    1. 确认Ubuntu One账户是否为企业级订阅(如Ubuntu Pro for Infrastructure或Desktop);
    2. 登录Ubuntu Pro管理门户,检查所绑定令牌的权益详情;
    3. 升级至支持ESM-Apps的付费计划(如每节点约$25/年);
    4. 重新attach新生成的支持ESM-Apps的token;
    5. 执行启用命令:sudo ua enable esm-apps

    示例流程图如下:

    graph TD
        A[运行 sudo ua status] --> B{ESM-Apps 是否显示为 'not entitled'?}
        B -- 是 --> C[登录 ubuntu.com/pro 管理控制台]
        C --> D[升级订阅或生成新Token]
        D --> E[执行 sudo pro detach]
        E --> F[执行 sudo pro attach <new_token>]
        F --> G[运行 sudo ua enable esm-apps]
        G --> H[验证APT源更新情况]
        B -- 否 --> I[直接尝试启用服务]
    

    4. 验证ESM-Apps启用后的效果

    一旦成功启用ESM-Apps,系统将自动配置新的APT源以接收安全补丁。可通过以下方式验证:

    # 查看是否添加了ESM-Apps源
    grep -r "esm-apps" /etc/apt/sources.list.d/
    
    # 输出示例:
    # /etc/apt/sources.list.d/ubuntu-esm-apps-focal.list:deb https://esm.ubuntu.com/apps/ubuntu focal-apps-security main
    

    此外,可使用apt-cache policy检查特定软件包的候选版本来源:

    apt-cache policy nginx

    预期输出应包含来自focal-apps-security仓库的安全更新版本。

    5. 第三方与旧版本软件包的安全补丁机制

    ESM-Apps的核心价值在于为非官方仓库安装的旧版软件(如Redis 6.x、Nginx 1.18)提供回溯式安全修复。其工作原理如下:

    • Canonical团队监控CVE数据库,并为受影响的旧版本构建二进制兼容的安全补丁;
    • 这些补丁通过专属的esm-apps仓库分发,URL受身份认证保护;
    • 无需更改现有APT配置,ua enable esm-apps会自动注册源并刷新缓存;
    • 安全更新优先级高于普通仓库,确保及时覆盖高危漏洞。

    例如,即使您使用的是从ppa:nginx/stable安装的Nginx,只要其版本在ESM支持范围内,即可通过focal-apps-security获得CVE修复。

    6. 常见陷阱与排查建议

    问题现象可能原因解决方法
    Contract does not allow订阅无ESM-Apps权限升级订阅或更换token
    403 Forbidden访问ESM源凭证未正确加载运行sudo pro refresh
    无安全更新推送软件不在支持列表查阅Ubuntu CVE Tracker
    APT报错GPG密钥缺失密钥环异常导入0xD94AA3F0E5A067A6
    enable命令无响应后台daemon未运行重启ubuntu-advantage-daemon
    多节点部署失败token已达设备上限扩容许可或分离旧设备

    建议定期运行sudo ua refresh同步合同状态,并结合sudo unattended-upgrade实现自动化补丁应用。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 12月26日
  • 创建了问题 12月25日