问题很简单,我想列出所有可以登录我的系统的用户帐户,但我不确定 /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 模块可以配置为限制特定用户,或根据需要修改登录行为。(即服务器上没有主目录不允许登录。)