在 Oracle Linux 6 上,我尝试启动 postgresql 服务,但失败并显示“runuser: /bin/bash:/sbin/nologin: No such file or directory”

在 Oracle Linux 6 上,我尝试启动 postgresql 服务,但失败并显示“runuser: /bin/bash:/sbin/nologin: No such file or directory”

直到今天早上一切都运转良好。 postgresql 服务已停止,无法启动。

当我运行该命令时sudo service postgresql start,我收到一条 [FAILED] 消息。然后,我转到 /var/lib/pgsql/pgstartup.log 文件,并看到以下错误消息:

runuser: /bin/bash:/sbin/nologin: No such file or directory

然后我尝试 su 到 root,这是我过去能够做到的,但我收到了相同的错误消息。然后我尝试 su 用户 postgres,并收到相同的错误消息。

这些文件确实存在,我检查了它们(/bin/bash 和 /sbin/nologin)。

注意 - 我能够通过键入以下命令来解决该错误 - sudo chsh root -s $SHELL。这实际上允许我在 su 到 root 后启动 postgresql 服务器。我想我现在的问题是 - 有谁知道什么会导致这种情况?我应该担心我的系统在安全方面受到损害吗?

答案1

无论出于何种原因,您的 root 用户的登录 shell 被设置为文字值/bin/bash:/sbin/nologin。当以 root 身份运行时sudo以及需要 root 登录 shell 时,系统将尝试执行文字命令/bin/bash:/sbin/nologin,但由于显而易见的原因,该命令并不存在。/bin/bash/sbin/nologin单独存在并不重要。

使用 修复后chsh,您很可能需要检查 root 登录 shell 以确保它确实是/bin/bash(Oracle Linux 上的默认登录 shell)。您应该能够通过简单地检查返回的条目来做到这一点

getent passwd root

应该有七个:用 - 分隔的字段,最后一个应该是/bin/bash

相关内容