我一直在尝试找到一个直接的答案,但找不到任何地方。无人值守的安全补丁升级会自动重启服务吗?如果是这样,有什么方法可以防止某些可能非常具有破坏性的软件包(例如 postgresql)这样做?而且,在日志中是否有任何地方可以看到服务上次重启的时间?
答案1
要回答这个问题,首先必须澄清,unattended-upgrades 是一种服务,它基本上代表您自动运行“apt upgrade”。如果您曾经升级过软件包,您会注意到其中许多软件包都会触发操作作为升级过程的一部分;例如,如果您升级 rsync,您会注意到守护进程已重新启动:
Setting up rsync (3.1.0-2ubuntu0.2) ...
* Restarting rsync daemon rsync [ OK ]
一般来说,包含守护进程(换句话说,正在运行的服务)的编写良好的 Debian 软件包将在升级过程中重新启动这些守护进程;如果您关心的软件包没有发生这种情况,请提交错误(如果可以,请提供修复)。
有一种重要情况不会发生这种情况:当您不升级服务本身,而是升级它所依赖的系统包时。想到的一个例子是 openssl,它被许多实现 SSL 支持的服务使用。对于这些服务,需要手动重启服务,如果您不知道需要重启多少服务或哪些服务,重启可以解决问题。
为了避免某些软件包被升级,请将软件包添加到 Unattended-Upgrade::Package-Blacklist 配置节;请参阅答案我可以配置无人值守升级以不升级需要重新启动的软件包吗?了解语法示例。
最后,关于升级的话题,值得一提的是规范的实时补丁这项服务提供免费、无人值守的实时内核安全修复升级服务。如果您还没有尝试过,那您应该尝试一下。