如何判断用户是否“被允许在 Linux 上登录”?

如何判断用户是否“被允许在 Linux 上登录”?

问题很简单,我想列出所有可以登录我的系统的用户帐户,但我不确定 /etc/passwd 中的所有用户是否都是“可以登录”的用户?

细节:

我可以看到 shell 设置为 和 的用户,/usr/sbin/nologin这是否意味着他们无法登录?/bin/false/etc/passwd

我也知道我可以将用户的加密密码设置为*!/etc/shadow禁用帐户,所以“禁用用户”也应该被视为“无法登录”的用户,对吗?

答案1

这在很大程度上取决于你对“登录”的定义——从技术上讲,任何用户存在&是“有效用户” /etc/passwd/etc/shadow理论上可以在正确的情况下登录。

您所谈论的方法大致可以分为以下几类:

  • 账户“锁定”的用户 如果/etc/shadow
    用户的密码设置为*!或其他永远不会匹配的哈希值,则该用户将被“锁定”(在 Sun 时代,惯例通常是*LK*,表示“已锁定”)。
    这些用户无法登录通过输入密码, 但他们仍然使用其他身份验证机制(例如 SSH 密钥)记录。

  • 具有“非交互式”shell 的用户/etc/passwd
    帐户具有“非交互式 shell”(/bin/false, )的用户/sbin/nologin无法登录互动地——即他们无法获得 shell 提示来运行命令(如果用户在系统上有 SSH 密钥,这也会阻止 SSH 命令执行)。
    这些用户可能仍然能够登录来执行诸如阅读/发送电子邮件之类的操作(通过 POP/IMAP 和 SMTP AUTH)。为永远不需要使用 shell 的用户(以及大多数“服务帐户”)设置非交互式 shell 通常被认为是一种好的做法。

因此,根据您“能够登录”的标准,您可能需要检查其中一项或两项。

答案2

禁用用户和将 shell 设置为 /bin/false 或类似设置之间存在差异。

将 shell 设置为 /bin/false 可防止用户获取 shell,但如果本地用户用于其他用途(邮件身份验证、ftp 等),他们仍可登录系统。禁用用户将使他无法使用使用本地用户的服务器的任何服务。

答案3

除上述情况外,即使使用多种不同的方法输入的密码看起来正确,用户仍可能会被锁定在系统之外。

/etc/security/access.conf 可用于限制谁可以登录。

有许多 PAM 模块可以配置为限制特定用户,或根据需要修改登录行为。(即服务器上没有主目录不允许登录。)

相关内容