如何在Ubuntu 18.04上启用和设置自动无人参与的安全更新

定期更新Ubuntu系统是整体系统安全性的最重要方面之一。如果您不使用最新的安全补丁更新操作系统的软件包,那么您的计算机容易受到攻击。在本教程中,我们将逐步介绍如何在Ubuntu 18.04上配置自动无人值守更新。相同的步骤适用于Ubuntu 16.04和任何基于Ubuntu的发行版,包括Kubuntu,Linux Mint和Elementary OS。

4 min read
By myfreax
如何在Ubuntu 18.04上启用和设置自动无人参与的安全更新

定期更新Ubuntu系统是整体系统安全性的最重要方面之一。如果您不使用最新的安全补丁更新操作系统的软件包,那么您的计算机容易受到攻击。

如果您管理多台Ubuntu计算机,则手动更新系统软件包可能很耗时。即使您管理单个Ubuntu安装,有时您也可能忽略了重要更新。这是自动无人值守更新很方便的地方。

在本教程中,我们将逐步介绍如何在Ubuntu 18.04上配置自动无人值守更新。相同的步骤适用于Ubuntu 16.04和任何基于Ubuntu的发行版,包括Kubuntu,Linux Mint和Elementary OS。

先决条件

在继续学习本教程之前,请确保您以个具有sudo特权的用户身份登录。

安装无人值守升级软件包

unattended-upgrades软件包用于自动安装更新的软件包。可能是该软件包已经安装在Ubuntu系统上,如果没有,您可以在终端中输入以下命令来安装该软件包:

sudo apt install unattended-upgrades

安装完成后,无人参与的升级关机服务将启用并自动启动。您可以输入以下内容进行验证:

● unattended-upgrades.service - Unattended Upgrades Shutdown
   Loaded: loaded (/lib/systemd/system/unattended-upgrades.service; enab
   Active: active (running) since Sun 2019-03-10 07:52:08 UTC; 2min 35s 
     Docs: man:unattended-upgrade(8)
   CGroup: /system.slice/unattended-upgrades.service

配置无人值守自动更新

我们可以通过编辑/etc/apt/apt.conf.d/50unattended-upgrades文件来配置unattended-upgrades程序包设置。默认配置对于大多数用户来说应该可以正常工作,但是您可以打开文件并根据需要进行更改。

无人参与升级软件包,可以配置为更新所有软件包或仅更新安全性。第一部分定义了将自动更新哪些类型的软件包。默认情况下,将只安装安全更新,如果你想能够从其他存储库,你可以通过从行的开头双斜线//取消对相应存储库的更新。 //之后的所有内容均为注释,程序包不会读取。

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

Unattended-Upgrade::Allowed-Origins {
  "${distro_id}:${distro_codename}";
	"${distro_id}:${distro_codename}-security";
	// Extended Security Maintenance; doesn't necessarily exist for
	// every release and this system may not have it installed, but if
	// available, the policy for updates is such that unattended-upgrades
	// should also install from here by default.
	"${distro_id}ESM:${distro_codename}";
//	"${distro_id}:${distro_codename}-updates";
//	"${distro_id}:${distro_codename}-proposed";
//	"${distro_id}:${distro_codename}-backports";
};

如果出于任何原因要禁止某些程序包自动更新,只需将其添加到程序包黑名单中即可:

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

Unattended-Upgrade::Package-Blacklist {
//      "vim";
//      "libc6";
//      "libc6-dev";
//      "libc6-i686";
};

如果由于某种原因自动更新出现问题,您可能还希望接收电子邮件。为此,请取消注释以下两行,然后输入您的电子邮件地址。确保您具有可以发送已安装在系统上的电子邮件的工具,例如mailx postfix

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

Unattended-Upgrade::Mail "your@email.com";
Unattended-Upgrade::MailOnlyOnError "true";

启用无人值守的自动更新

要启用自动更新,您需要确保apt配置文件/etc/apt/apt.conf.d/20auto-upgrades至少包含以下两行,默认情况下应包括以下两行:

/etc/apt/apt.conf.d/20自动升级

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

以上配置会更新软件包列表,并每天安装可用的更新。

您还可以添加以下行,每7天清除一次本地下载存档。

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

APT::Periodic::AutocleanInterval "7";

启用/禁用自动更新的另一种方法是运行以下命令,该命令将修改(或创建(如果不存在的话))/etc/apt/apt.conf.d/20auto-upgrades

sudo dpkg-reconfigure -plow unattended-upgrades

测试

要测试自动升级是否正常运行,请执行试运行:

sudo unattended-upgrades --dry-run --debug

输出应如下所示:

...
pkgs that look like they should be upgraded:
Fetched 0 B in 0s (0 B/s)
fetch.run() result: 0
blacklist: []
whitelist: []
No packages found that can be upgraded unattended and no pending auto-removals

自动无人值守升级的历史记录在/var/log/unattended-upgrades/unattended-upgrades.log文件中。

结论

在本教程中,您学习了如何配置自动无人参与更新并保持系统为最新。

如果您有任何问题或反馈,请随时发表评论。