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 通常被认为是好的做法。
因此,根据“能够登录”的标准,您可能需要检查其中一项或两项。
禁用用户和将 shell 设置为 /bin/false 或类似之间是有区别的。
将 shell 设置为 /bin/false 可防止用户获得 shell,但如果本地用户用于其他用途(邮件身份验证、ftp 等),他们仍然可以登录系统。禁用用户会使他无法使用使用本地用户的服务器的任何服务。