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

har*_*ryz 14 linux unix user-management

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

细节:

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

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

vor*_*aq7 13

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

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

  • 具有“锁定”帐户
    的用户 密码设置为*!或其他永远不会匹配的哈希值的用户被“锁定”(在 Sun 时代,约定通常是*LK*,表示“锁定”)。
    这些用户无法通过输入密码登录,但他们仍然可以使用其他身份验证机制(例如 SSH 密钥)登录。

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

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


Pen*_*100 6

禁用用户和将 shell 设置为 /bin/false 或类似之间是有区别的。

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