在CentOS 7上使用yum-cron配置自动更新

时间:2020-03-05 15:26:17  来源:igfitidea点击:

定期更新CentOS系统是整体系统安全性的最重要方面之一。
如果不使用最新的安全补丁更新操作系统的程序包,则可能使计算机容易受到攻击。

如果我们管理多台CentOS计算机,则手动更新系统软件包可能会很耗时。
即使我们只管理一个CentOS安装,有时我们也可能忽略了一个重要的更新。
这是自动更新很方便的地方。

在本教程中,我们将介绍在CentOS 7上配置自动更新的过程。
相同的说明适用于CentOS 6.

准备工作

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

安装yum-cron软件包

“ yum-cron”软件包允许我们自动将yum命令作为cron作业运行,以检查,下载和应用更新。

可能此软件包已安装在CentOS系统上。
如果未安装,则可以通过运行以下命令来安装软件包:

sudo yum install yum-cron

安装完成后,启用并启动服务:

sudo systemctl enable yum-cronsudo systemctl start yum-cron

要验证该服务正在运行,请键入以下命令:

systemctl status yum-cron

屏幕上将显示有关yum-cron服务状态的信息:

● yum-cron.service - Run automatic yum updates as a cron job
   Loaded: loaded (/usr/lib/systemd/system/yum-cron.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sat 2019-05-04 21:49:45 UTC; 8min ago
  Process: 2713 ExecStart=/bin/touch /var/lock/subsys/yum-cron (code=exited, status=0/SUCCESS)
 Main PID: 2713 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/yum-cron.service

配置yum-cron

yum-cron带有两个配置文件,分别存储在'/etc/yum'目录中,每小时配置文件'yum-cron-hourly.conf'和每日配置文件'yum-cron.conf'。

“ yum-cron”服务仅控制cron作业是否将运行。
“ yum-cron”实用程序由“ /etc/cron.hourly/0yum-hourly.cron”和“ /etc/cron.daily/0yum-daily.cron”cron文件调用。

默认情况下,每小时cron配置为不执行任何操作。
如果有可用更新,则将每日cron设置为下载,但不安装可用更新并将消息发送到stdout。
对于希望在生产环境中接收通知并在测试服务器上测试更新之后手动进行更新的关键生产系统而言,默认配置就足够了。

配置文件分为几部分,每部分包含描述每个配置行所执行操作的注释。

要编辑yum-cron配置文件,请在文本编辑器中打开该文件:

sudo nano /etc/yum/yum-cron-hourly.conf

在第一部分的“ [命令]”中,我们可以定义要更新的程序包类型,启用消息和下载,并设置为在可用时自动应用更新。
默认情况下,“ update_cmd”设置为默认值,它将更新所有软件包。
如果要设置自动无人值守更新,建议将值更改为“ security”,这将告诉yum更新仅解决安全问题的软件包。

在以下示例中,我们将“ update_cmd”更改为“ security”,并通过将“ apply_updates”设置为“ yes”启用了无人值守更新:

/etc/yum/yum-cron-hourly.conf

[commands]
update_cmd = security
update_messages = yes
download_updates = yes
apply_updates = no
random_sleep = 360

第二部分定义了如何发送消息。
要将消息发送到stdout和email,请将'emit_via'的值更改为'stdio,email'。

/etc/yum/yum-cron-hourly.conf

[emitters]
system_name = None
emit_via = stdio,email
output_width = 80

在“ [电子邮件]”部分,我们可以设置发件人和收件人的电子邮件地址。
确保我们拥有一个可以发送系统上安装的电子邮件的工具,例如mailx或者postfix。

/etc/yum/yum-cron-hourly.conf

[email]
email_from = [email protected]
email_to = [email protected]
email_host = localhost

'[base]'部分允许我们覆盖'yum.conf'文件中定义的设置。
如果要排除特定软件包以使其不被更新,则可以使用'exclude'参数。
在以下示例中,我们排除了['mongodb']包。

/etc/yum/yum-cron-hourly.conf

[base]
debuglevel = -2
mdpolicy = group:main
exclude = mongodb*

我们无需重新启动“ yum-cron”服务即可使更改生效。

查看日志

使用grep检查是否执行了与yum相关的cron作业:

sudo grep yum /var/log/cron
Jan  4 22:01:01 localhost run-parts(/etc/cron.hourly)[5588]: starting 0yum-hourly.cron
Jan  4 22:32:01 localhost run-parts(/etc/cron.daily)[5960]: starting 0yum-daily.cron
Jan  4 23:01:01 localhost run-parts(/etc/cron.hourly)[2121]: starting 0yum-hourly.cron
Jan  4 23:01:01 localhost run-parts(/etc/cron.hourly)[2139]: finished 0yum-hourly.cron

yum更新的历史记录记录在“/var/log/yum”文件中。
我们可以使用tail命令查看最新更新:

sudo tail -f  /var/log/yum.log
Jan 04 23:47:28 Updated: libgomp-4.8.5-36.el7_6.2.x86_64
Jan 04 23:47:31 Updated: bpftool-3.10.0-957.12.1.el7.x86_64
Jan 04 23:47:31 Updated: htop-2.2.0-3.el7.x86_64