定期升级你的 CentOS 系统,是所有系统安全中最重要的措施之一。如果你不使用最新的安全补丁升级你的操作系统软件包,你将会让你的机器很容易被攻击。

如果你管理者多个 CentOS 机器,手动升级系统软件包会很花时间。及时你管理一个简单的 CentOS,有时候安装时你也可能忽视一个重要的更新。这时候,自动更新就派上用场了。

在这篇指南中,我们将会一起看看在 CentOS 7 上配置自动更新。同样的指令适合 CentOS 6.

一、前提条件

在继续这篇指南之前,确保你以 sudo 用户身份登录系统。

二、安装 yum-cron 软件包

yum-cron软件包允许你把自动运行 yum 命令作为一个定时任务来检测,下载和应用更新。很可能这个软包已经被安装在你的 CentOS 系统上。如果没有被安装,你可以同运行下面的命令安装这个软件包:

sudo yum install yum-cron

一旦安装完成,启用并且启动服务:

sudo systemctl enable yum-cron
sudo 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.hourly/0yum-hourly.cron

默认情况下,小时的 cron 被配置成什么都不做。如果有升级可用,每天的 cron 被设置成下载但是不安装可用的升级,并且发送消息到标准输出。默认的设置对于重要生产系统是很有效的,因为对于这种环境,你想要收到升级消息通知,并且在测试服务器上测试更新之后,才在生产服务器上手动更新。

这个配置文件以段为单位进行组织的,每一段都包含评论用来描述那一行配置是做什么的。

想要编辑 yum-cron 配置文件,使用你的文本编辑器打开文件:

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

在第一段,[commands]你可以定义你想要升级的软件包类型,启用消息通知,下载,以及设置在更新可用时自动更新。默认情况下,update_cmd被设置成默认,更新所有的软件包。如果你想设置无人自动升级,我们推荐你将这个值修改为security,它会告诉 yum 仅仅升级修复安全问题的软件包。

在下面的例子中,我们将update_cmd修改成security,并且通过设置apply_updatesyes来启用无人自动更新。 /etc/yum/yum-cron-hourly.conf

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

第二段定义了如何发送消息。想要同时给标准输出和 email 发送消息,修改这个值emit_viastdio,email。 /etc/yum/yum-cron-hourly.conf

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

[email]段你可以设置发送和接受的 email 地址。确保你的系统上已经安装了发送邮件的工具,例如 mailx 或者 postfix。 /etc/yum/yum-cron-hourly.conf

[email]
email_from = root@centos.host
email_to = me@example.com
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
May  4 22:01:01 localhost run-parts(/etc/cron.hourly)[5588]: starting 0yum-hourly.cron
May 4 22:32:01 localhost run-parts(/etc/cron.daily)[5960]: starting 0yum-daily.cron
May 4 23:01:01 localhost run-parts(/etc/cron.hourly)[2121]: starting 0yum-hourly.cron
May 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
May 04 23:47:28 Updated: libgomp-4.8.5-36.el7_6.2.x86_64
May 04 23:47:31 Updated: bpftool-3.10.0-957.12.1.el7.x86_64
May 04 23:47:31 Updated: htop-2.2.0-3.el7.x86_64

如果你想设置无人自动升级,我们推荐你将这个值修改为security,它会告诉 yum 仅仅升级修复安全问题的软件包。的更多相关文章

  1. 在IDEA中设置方法自动注释(带参数和返回值)

    第一部分 设置 打开设置面板 新建 在线模板 新建自动添加规则,注意 这里触发的字符 不能随便写 必须为 * Template text 区域 看上去有点乱,但是是为了显示时的对齐,该区域的内容如下( ...

  2. Android Studio如何设置代码自动提示

    在用Eclipse时候,你可以进行设置,设置成不管你输入任何字母,都能进行代码的提示,在Android Studio中也可以 设置,而且比Eclipse设置来的简单.当然如果你觉得代码自动提示会降低你 ...

  3. Effective C++ 之 Item 6 : 若不想使用编译器自动生成的函数,就该明确拒绝

    Effective C++ chapter 2. 构造 / 析构 / 赋值运算 (Constructors, Destructors, and Assignment Operators) Item 6 ...

  4. DataGridView设置不自动显示数据库中未绑定的列

    项目中将从数据库查出来的数据绑定到DataGridView,但是不想显示所有的字段.此功能可以通过sql语句控制查出来的字段数目,但是DataGridView有属性可以控制不显示未绑定的数据,从UI层 ...

  5. 在MyEclipse8.6中设置jQuery自动提示 - 肖飞figo的云计算专栏 - 博客频道 - CSDN.NET

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  6. eclipse代码自动提示,eclipse设置代码自动提示

    eclipse代码自动提示,eclipse设置代码自动提示 eclipse是很多JAVA开发者基本上都用的工具,用它可以很方便的开发JAVA代码,当编写JAVA代码时,大部分人都是按组合键[Alt+/ ...

  7. 设置SSH自动登陆(免密码,用户名)

    设置SSH自动登陆(免密码,用户名)   1.创建公钥.公钥  ssh-keygen -t rsa  无视它出来的任何提示,欢快的一路回车到底吧.  2.把公钥 id_rsa.pub 复制到远程机器的 ...

  8. mac下 netbeans 8.02中文版设置代码自动补齐 + eclipse自动补齐

    netbeans自带的自动补齐快捷键是commad+\ 我想要的是在输入的时候,有自动提示,找了半天也没找到怎么搞. 因为我是用的mac系统 后来参考其他的设置,找到了设置的方法,把这个方法记录一下. ...

  9. 如何设置phpMyAdmin自动登录和取消自动登录

    如何设置phpMyAdmin自动登录? 首先在根目录找到config.sample.inc.php复制一份文件名改为config.inc.php(如果已经存在 config.inc.php 文件,则直 ...

随机推荐

  1. HTML(〇):简介导读

    网页 什么是网页 网站(Website):是指在因特网上根据一定的规则,使用HTML(标准通用标记语言)等工具制作的用于展示特定内容相关网页的集合. 网页(webpage):是网站中的一页,通常是HT ...

  2. 史上最全jdk新特性总结,涵盖jdk8到jdk15!

    前言 在本文中,我将描述自第8版以来Java最重要且对开发人员友好的功能.为什么会有这样的主意?在Web上,您可以找到许多文章,其中包含每种Java版本的新功能列表.但是,由于缺少文章,因此无法简要概 ...

  3. 消息中间件-ActiveMQ高可用集群和持久化机制

    1.修改active.mq的xml文件 2.延时.调度消息 package com.study.mq.b1_message; import org.apache.activemq.ActiveMQCo ...

  4. Day16_95_IO_循环读取文件字节流read()方法(四)

    循环读取文件字节流read()方法(四) 使用 int read(byte[] bytes) 循环读取字节流数据 import java.io.FileInputStream; import java ...

  5. 支持多线程的Redis6.0来了

    支持多线程的 Redis 6.0 版本于 2020-05-02 终于发布了,为什么 Redis 忽然要支持多线程?如何开启多线程?开启后性能提升效果如何?线程数量该如何设置?开启多线程后会不会有线程安 ...

  6. 基于excel的接口自动化测试框架:支持参数化、关联等

    1. 框架结构说明 2. 框架代码实现 action 包  case_action.py business_process 包 main_process.py util 包 global_var.py ...

  7. 详解Linux指令与文件的搜寻

    我们在管理Linux服务器时通常会进行搜索文件及目录操作,下面我们就开始了解一下linux目录结构的相关知识. 博主再奉上一套零基础入门Linux视频,带你从入门到精通 https://www.bil ...

  8. 三. 初步认识Eureka注册中心

    Eureka Eureka是Netflix公司出品,英文直译:发现了,找到了! 认识Eureka (一)首先我们来解决第一问题,服务的管理. Ⅰ.早期开发模式中出现的问题 再早期开发时业务时,首先模块 ...

  9. 【.NET 与树莓派】数模转换

    在开始之前,需要说明一对很耳熟的概念--数字信号 & 模拟信号. 这些概念的理论有些复杂,你如果相当有兴趣,可以找来有关的文献细细研究:若你不关心那是啥只想知道咋用,那就通俗但不庸俗地理解一下 ...

  10. ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息

    ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息是需要客户授权,下面讲解详细步骤: 第一步:客户点击登录页,自动跳转到微信服务器端获取code 第二步:用第一步获取的code去获取客户的ac ...