centos – SELinux重置root密码

前端之家收集整理的这篇文章主要介绍了centos – SELinux重置root密码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
免责声明:这个问题不是为了解决SE Linux处于活动状态时更改root密码的问题,因为已经有很多指南需要解决.这更像是SELinux在内部如何做到这一点.

我是SELinux的最近用户,但最近我更加接触它.曾经有一段时间有人问我如何在忘记密码的情况下重置root密码.
所以我启动了我的CentOS,编辑了grub条目

….
linux16< kernel_location> root = / dev / mapper / centos-root rw init = / bin / bash

我运行了passwd,然后运行同步并强制重启.
重新启动后,使用新密码登录被拒绝,当然还有旧密码.
再次重新启动并传递内核参数以禁用SELinux(selinux = 0).尝试使用新密码登录并且它有效.
之后我强制使用fs auto relabel(通过文件.autorelabel)并且SELinux处于活动状态,现在可以登录了.

我的问题是:为什么会发生?当仅仅更改密码而不是用户或对象时,为什么重新标记会影响登录

感谢您的关注.

TL; DR:通常的root密码重置在SELinux中不起作用.为什么?

编辑:这是在运行CentOS7的虚拟机上测试的,其中KVM作为管理程序.

我能够在新安装的CentOS 7.5系统中复制此问题.

以下是发生的事情:

使用init = / bin / bash启动时,可能会遇到两个问题:

>根文件系统可以只读安装.在这种情况下,passwd会抱怨身份验证令牌操作错误.

这很明显:如果文件系统没有以读写方式挂载,则无法写入它.
>可能未加载SELinux策略.在这种情况下,passwd将成功更改密码,但您将遇到上述原始问题中描述的问题:没有人能够登录.

密码哈希存储在/ etc / shadow文件中.该文件通常具有SELinux类型shadow_t.但是,在未加载SELinux策略的情况下更改文件会导致从文件删除SELinux类型,将其保留为unlabeled_t.因此,尝试读取文件以验证登录的服务不再能够读取它.

要更改RHEL / CentOS 7上的root密码,您需要遵循以下过程:

>将init = / bin / bash添加到grub中内核命令行的末尾,就像之前一样.
>在bash提示符下,使用/usr/sbin / load_policy -i加载SELinux策略.
>使用mount -o remount,rw /挂载根文件系统读写.
>现在更改密码,它将成功. passwd root
>重新安装文件系统以提交更改,并在下次启动时使用mount -o remount,ro /创建一个干净的文件系统.
>退出shell或使用exec / sbin / init 6重新启动系统.

现在,您可以使用更改的root密码登录.

Red Hat提供longer explanation of this procedure(需要订阅).

原文链接:https://www.f2er.com/centos/373856.html

猜你在找的CentOS相关文章