![安装nfs-utils后登录不正确](https://linux22.com/image/154811/%E5%AE%89%E8%A3%85nfs-utils%E5%90%8E%E7%99%BB%E5%BD%95%E4%B8%8D%E6%AD%A3%E7%A1%AE.png)
我正在尝试在无状态 RHEL6.5 KVM 虚拟机中安装 nfs-utils(及其所有依赖项)。 VM 通过/etc/sysconfig/readonly-root
文件、我没有实现的 Linux 魔法以及 VM 设置 GUI 中的“只读”选项配置为具有只读根。安装是使用 完成的virt-customize -a image.img --run install_script.sh
。该脚本使用此处文档来构建 .repo 文件(该文件将转到 CentOS 6.5 的保管库),然后我用它来yum install -y nfs-utils
进行实际安装。我之所以采用这种方法,是因为与让虚拟机以读/写模式启动、安装、清理、然后关闭相比,它显得更简单、更干净且更不容易出错。另外,我不知道如何让它启动读/写。
输出virt-customize
显示软件包已成功安装。唯一的失败是由于拼写错误而删除了 .repo。
安装完成后,我启动了虚拟机并尝试像往常一样登录。我的尝试现在被拒绝了,因为Login incorrect
。
我检查了virt-cat
以确保用户的登录 shell 设置正确,并且加密的密码看起来/etc/shadow
与原始密码相同。
我最初的方法是创建一个包含所有依赖项和 nfs-utils 的 ISO 映像,并将其附加到 VM 并让脚本处理安装。当时也出现了同样的问题。我将问题的根源缩小到安装了一个 NFS 软件包:或者nfs-utils
(nfs-utils-lib
两者之一,我不记得了),以及软件包rpcbind
。安装这些软件包之一并启动虚拟机后,登录会中断。我猜这也是现在发生的同样的问题。
我用于 VM 的映像是cp
从原始 VM 映像中删除的,因为这是一个测试,旨在找出如何正确进行安装。
是的,我输入的密码正确。我尝试更改用户的密码(通过libguestfs
工具),但仍然无法登录,所以我不确定更改是否失败(命令的返回码表示成功)或是否存在相同的问题。
问题:
- 登录问题可以调试和修复吗?如果是这样,怎么办?
- 如何正确安装才能避免登录失败?显然这种方法行不通。
答案1
这里的核心问题是 SELinux。将软件安装到虚拟机中的方法有多种,但归根结底都是虚拟机被引导或不被引导。后者是把一切搞砸的原因,这就是我在帖子中进行安装的方式。
据我所知,当虚拟机关闭并安装软件(例如通过问题中的命令)时,SELinux 意识到发生了一些变化,并且它不知道安装后启动虚拟机时发生了什么,并锁定所有内容。允许 SELinux 重新标记可以解决这个问题,但对我来说破坏了很多其他东西。实际上,当系统离线时,无法编写安装脚本,因为您可能会遇到这种情况。请注意,此问题可能仅与 RHEL6.5 VM 及其 SELinux 版本有关(我们的版本锁定为 RHEL6.5)。
对此类 VM 进行安装的正确方法是将其启动到读/写模式,并通过安装具有所需 RPM 的 ISO 或使用包管理器来执行安装。启动时,SELinux 会意识到安装,一切都会顺利进行。