问题很简单,我想列出所有可以登录我系统的用户帐户,但我不确定/ etc / passwd中的所有用户是否都“可以登录”用户?
细节:
我可以在/ etc / passwd中看到shell设置为/usr/sbin / nologin和/ bin / false的用户,这是否意味着他们无法登录?
我也知道我可以将用户的加密密码设置为*或!在/ etc / shadow中禁用一个帐户,所以“禁用用户”也应该被视为“无法登录”的用户,对吧?
解决方法
这很大程度上取决于您对“登录”的定义 – 从技术上讲,任何用户都存在于/ etc / passwd& / etc / shadow是一个“有效用户”,理论上可以在正确的环境下登录.
您正在谈论的方法分为以下几大类:
>拥有“锁定”帐户的用户
密码设置为*,!或其他一些永远不会匹配的哈希的用户被“锁定”(在日常工作中,约定通常是* LK *,用于“已锁定”).
这些用户无法通过键入密码登录,但他们仍然可以使用其他身份验证机制(例如,SSH密钥)进行登录.
>具有“非交互式”shell的用户
其帐户具有“非交互式shell”(/ bin / false,/ sbin / nologin)的用户无法以交互方式登录 – 即他们无法获得shell提示符来运行命令(这也会阻止SSH命令)如果用户在系统上有SSH密钥,则执行.
这些用户仍然可以登录以执行诸如读取/发送电子邮件之类的操作(通过POP / IMAP和SMTP AUTH).为永远不需要使用shell(以及大多数“服务帐户”)的用户设置非交互式shell通常被认为是一种良好的做法.
因此,根据您“能够登录”的标准,您可能需要检查其中一个或两个.