centos7开启selinux导致无法修改主机名

  1. 问题:使用ansible部署openshift初始化环境的时间,脚本执行到修改主机名时间报错,经排查是hostname系统服务宕机了

在这里插入图片

#执行的代码如下
---
- name: set the host name
  command: hostnamectl set-hostname {{ hostname }}

centos7开启selinux导致无法修改主机名_第1张图片

  1. 问题分析: 我们通过 ls -Z 命令我们可以查看文件上下文信息,也就是/etc/hostname文件的SELinux信息
[root@master1 etc]# ls -Z hostname 
-rw-r--r--. root root system_u:object_r:unlabeled_t:s0 hostname
  • 我们可以通过 ls -Z 这个命令来查看我们文件的上下文信息,也就是SELinux信息,我们发现其比传统的 ls 命令多出来了
  • system_u:object_r:unlabeled_t:s0这个东西,我们现在就来分析一下这段语句所代表的含义
system_u:object_r:unlabeled_t:s0

这条语句通过:划分成了四段,第一段 system_u 代表的是用户,第二段 object_r 表示的是角色,第三段是SELinux中最重要的信息,unlabeled_t表示的是自由进程/文件,最后一段 s0 是跟MLS、MCS相关的东西,暂时不需要管
  • 我们看第三段unconfined_t:自由进程/文件。大部分本地进程都属于此,但是我们的hostname是系统服务啊,所以问题就是出在了这里
  1. 问题原因:因开启了selinux导致hostname权限发生变化
  2. 问题处理:解决办法由两种:
    ①直接将SELinux的工作模式设置成 disabled,这样就不会出现策略拦截问题了,但是这样的话我们的系统就没有SELinux安全防护了
    ②通过 restorecon 或者 chcon 命令来修复我们的文件上下文信息,因业务需要,这里采用这种方案
    命令 restorecon 可以用来恢复文件默认的上下文:
[root@master1 etc]# restorecon -R -v hostname 
restorecon reset /etc/hostname context system_u:object_r:unlabeled_t:s0->system_u:object_r:hostname_etc_t:s0
[root@master1 etc]# ls -Z hostname 
-rw-r--r--. root root system_u:object_r:hostname_etc_t:s0 hostname

使用 restorecon 命令de目的,让hostname 的上下文信息就继承上一级目录 etc这个目录的上下文信息
之后我们重启systemd-hostnamed这个系统服务,并修改主机名

[root@master1 etc]# systemctl status systemd-hostnamed
● systemd-hostnamed.service - Hostname Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-hostnamed.service; static; vendor preset: disabled)
  Drop-In: /etc/systemd/system/systemd-hostnamed.service.d
           └─override.conf
   Active: inactive (dead)
     Docs: man:systemd-hostnamed.service(8)
           man:hostname(5)
           man:machine-info(5)
           http://www.freedesktop.org/wiki/Software/systemd/hostnamed

Jun 28 09:16:22 master1 systemd[1]: Starting Hostname Service...
Jun 28 09:16:22 master1 systemd-hostnamed[87015]: Failed to read hostname and machine information: Permission denied
Jun 28 09:16:22 master1 systemd[1]: Started Hostname Service.
Jun 28 09:16:22 master1 systemd[1]: systemd-hostnamed.service: main process exited, code=exited, status=1/FAILURE
Jun 28 09:16:22 master1 systemd[1]: Unit systemd-hostnamed.service entered failed state.
Jun 28 09:16:22 master1 systemd[1]: systemd-hostnamed.service failed.
[root@master1 etc]# systemctl start systemd-hostnamed
[root@master1 etc]# systemctl status systemd-hostnamed
● systemd-hostnamed.service - Hostname Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-hostnamed.service; static; vendor preset: disabled)
  Drop-In: /etc/systemd/system/systemd-hostnamed.service.d
           └─override.conf
   Active: active (running) since Sun 2020-06-28 09:17:31 CST; 1s ago
     Docs: man:systemd-hostnamed.service(8)
           man:hostname(5)
           man:machine-info(5)
           http://www.freedesktop.org/wiki/Software/systemd/hostnamed
 Main PID: 89007 (systemd-hostnam)
   CGroup: /system.slice/systemd-hostnamed.service
           └─89007 /usr/lib/systemd/systemd-hostnamed

Jun 28 09:17:31 master1 systemd[1]: Starting Hostname Service...
Jun 28 09:17:31 master1 systemd[1]: Started Hostname Service.

centos7开启selinux导致无法修改主机名_第2张图片

你可能感兴趣的:(centos)