如何检查 shell 未设置为 /sbin/nologin 或 /bin/false

如何检查 shell 未设置为 /sbin/nologin 或 /bin/false

尝试遵循这个解决方案:https://serverfault.com/a/384811

但无法遵循这些最后步骤:“另外,检查 shell 是否未设置为 /sbin/nologin 或 /bin/false,这也会阻止登录,即使身份验证成功。”

我在使用 lubuntu 恢复 shell。我该怎么做?我对这些都了解不多。谢谢

答案1

“另外,请检查 shell 是否未设置为 /sbin/nologin 或 /bin/false,因为即使身份验证成功,这也会阻止登录。”

在您提供的链接中,上面指的是/etc/passwd文件。

文件/etc/passwd格式如下:

  1. 用户名:用户登录时使用,长度在1到32个字符之间。
  2. 密码:x 字符表示加密密码存储在 /etc/shadow 文件中。
  3. 用户 ID (UID):每个用户必须分配一个用户 ID (UID)。UID 0(零)为 root 保留,UID 1-99 为其他预定义帐户保留。此外,UID 100-999 由系统为管理员和系统帐户/组保留。
  4. 组 ID (GID):主组 ID(存储在 /etc/group 文件中)

  5. 用户 ID 信息:注释字段。它允许您添加有关用户的额外信息,例如用户的全名、电话号码等。此字段由 finger 命令使用。

  6. 主目录:用户登录时所在目录的绝对路径。如果此目录不存在,则用户目录变为 /
  7. 命令/shell:命令或 shell 的绝对路径(/bin/bash)。通常,这是一个 shell。请注意,它不一定是 shell。

这里,你感兴趣的是最后一个参数:Command/shell

如果你觉得这很有趣/sbin/nologin,和之间的区别如下/bin/false

当 /sbin/nologin 被设置为 shell 时,如果使用该 shell 的用户登录,他们会收到一条礼貌的消息,提示“此帐户当前不可用”。可以使用文件 /etc/nologin.txt 更改此消息。

/bin/false 只是一个二进制文件,当它被调用时会立即退出并返回 false,所以当使用 false 作为 shell 的人登录时,他们会在 false 退出时立即被注销。


因此,基本上,只需检查/etc/passwd您没有的文件/sbin/nologin/bin/false在您需要的用户的最后一个字段中定义的文件即可。

(嗯,不确定我为什么写这样的答案,因为我的最初评论应该足够了,但那是......)

相关内容