尝试遵循这个解决方案:https://serverfault.com/a/384811
但无法遵循这些最后步骤:“另外,检查 shell 是否未设置为 /sbin/nologin 或 /bin/false,这也会阻止登录,即使身份验证成功。”
我在使用 lubuntu 恢复 shell。我该怎么做?我对这些都了解不多。谢谢
答案1
“另外,请检查 shell 是否未设置为 /sbin/nologin 或 /bin/false,因为即使身份验证成功,这也会阻止登录。”
在您提供的链接中,上面指的是/etc/passwd
文件。
文件/etc/passwd
格式如下:
- 用户名:用户登录时使用,长度在1到32个字符之间。
- 密码:x 字符表示加密密码存储在 /etc/shadow 文件中。
- 用户 ID (UID):每个用户必须分配一个用户 ID (UID)。UID 0(零)为 root 保留,UID 1-99 为其他预定义帐户保留。此外,UID 100-999 由系统为管理员和系统帐户/组保留。
组 ID (GID):主组 ID(存储在 /etc/group 文件中)
用户 ID 信息:注释字段。它允许您添加有关用户的额外信息,例如用户的全名、电话号码等。此字段由 finger 命令使用。
- 主目录:用户登录时所在目录的绝对路径。如果此目录不存在,则用户目录变为 /
- 命令/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
在您需要的用户的最后一个字段中定义的文件即可。
(嗯,不确定我为什么写这样的答案,因为我的最初评论应该足够了,但那是......)