当前位置: 首页 > news >正文

Linux系统之lslogins 命令详解

lslogins 命令详解

一、命令概述

lslogins 是用于显示系统中已知用户信息的工具,通过解析 wtmp(登录日志)、btmp(失败登录日志)、/etc/passwd/etc/shadow(需root权限)等文件,输出用户的基本信息、登录历史、密码状态(如过期时间)等。其核心功能是集中展示用户账户的关键属性,支持按用户、组筛选,适配不同输出格式,适用于系统用户管理、安全审计(如查看失败登录)和账户状态核查。

二、语法格式
lslogins [选项] [-s|-u[=UID]] [-g groups] [-l logins]
  • 参数说明
    • 选项控制信息类型(如密码过期、失败登录)、筛选条件(如组、登录名)、输出格式等。
    • -s/-u 分别指定显示系统账户/用户账户(-u=UID 可指定具体UID)。
    • -g groups 仅显示属于指定组的用户(组名/ID,逗号分隔)。
    • -l logins 仅显示指定登录名/UID的用户(逗号分隔)。
三、核心功能

lslogins 整合多源用户信息,核心功能包括:

  1. 基础用户信息:用户名、UID、GID、家目录、默认shell等(来自 /etc/passwd)。
  2. 登录相关信息:最后登录时间、IP地址、失败登录记录(来自 wtmpbtmp)。
  3. 密码与账户状态:最后密码更改时间、账户过期日期(来自 /etc/shadow,需root权限)。
  4. 筛选与分类:区分系统账户(低UID)和普通用户账户,按组或登录名筛选结果。
  5. 灵活输出:支持冒号分隔、NAME=VALUE 导出、指定列等格式,适配手动查看或脚本解析。
四、选项详解
1. 信息类型控制(显示特定数据)
选项长选项说明
-a--acc-expiration显示密码最后更改日期账户过期日期(需root权限,依赖 /etc/shadow)。
-f--failed显示用户最后失败的登录尝试信息(如时间、来源IP)。
-L--last显示用户最后登录会话信息(如登录时间、终端、IP)。
-p--pwd显示与密码登录相关的信息(通常与 -a-f-L 结合使用)。
2. 筛选用户(按组、登录名、账户类型)
选项长选项说明
-s--system-accs仅显示系统账户:默认UID < 1000(不含),排除 nobody/nfsnobody(UID 65534),具体范围由 /etc/login.defs 中的 SYS_UID_MINSYS_UID_MAX 定义。
-u[=UID]--user-accs[=UID]仅显示普通用户账户:默认UID ≥ 1000,范围由 /etc/login.defs 中的 UID_MINUID_MAX 定义;-u=UID 可指定单个UID的用户。
-g groups--groups=groups仅显示属于 groups(组名或GID,逗号分隔)的用户。
-l logins--logins=logins仅显示 logins(用户名或UID,逗号分隔)指定的用户。
3. 输出格式控制
选项长选项说明
-c--colon-separate冒号分隔每个用户的信息(默认用换行分隔)。
-e--exportNAME=VALUE 格式输出(便于脚本解析,如 USER=root UID=0)。
-n--newline每条信息单独占一行(而非列对齐)。
--noheadings-不显示表头(列标题),适合批量处理。
--notruncate-不截断长文本(如长用户名、家目录路径)。
-o list--output list指定输出列(用逗号分隔列名,如 USER,UID,LAST_LOGIN),通过 lslogins --help 查看支持的列。
-r--raw原始输出(无列对齐,字段直接拼接)。
--time-format type-日期显示格式:short(默认,简洁格式)、full(完整格式)、iso(ISO 8601格式)。
4. 其他选项
选项长选项说明
-G--supp-groups显示用户所属的附加组信息。
-h--help显示帮助信息(含支持的输出列)并退出。
-V--version显示版本信息并退出。
--btmp-file path-指定 btmp 日志文件的替代路径(默认 /var/log/btmp)。
--wtmp-file path-指定 wtmp 日志文件的替代路径(默认 /var/log/wtmp)。
五、核心输出信息

lslogins 输出的关键信息(列)包括:

  • 基础用户属性USER(用户名)、UID(用户ID)、GID(主组ID)、HOME(家目录)、SHELL(默认shell)。
  • 登录相关LAST_LOGIN(最后登录时间)、TTY(终端)、IP(登录IP)、FAILED_LOGIN(最后失败登录时间)。
  • 密码与账户状态PWD_CHANGE(最后密码更改时间)、PWD_EXPIRE(密码过期时间)、ACC_EXPIRE(账户过期时间,需 -a 和root权限)。
  • 组信息GROUP(主组)、SUPP_GROUPS(附加组,需 -G)。
六、使用示例
1. 显示所有用户的基本信息
lslogins  # 输出所有用户的用户名、UID、GID、家目录等基础信息
2. 查看特定用户的详细信息(含最后登录)
lslogins -l root,1000 -L  # 显示root和UID=1000的用户,包含最后登录会话
3. 显示系统账户(低UID)
lslogins -s  # 仅显示系统账户(UID范围由/etc/login.defs定义)
4. 查看用户密码状态(需root,含过期时间)
sudo lslogins -a -l alice  # 显示alice的密码更改时间、账户过期日期(需root)
5. 显示失败登录记录
lslogins -f  # 输出所有用户的最后失败登录尝试(时间、IP等)
6. 以NAME=VALUE格式导出用户信息(适合脚本)
lslogins -e -l bob  # 以bob=VALUE格式输出bob的信息
七、注意事项
  1. 权限要求

    • 查看密码相关信息(如 -a 选项)需 root 权限(因需访问 /etc/shadow)。
    • 普通用户可查看基础用户信息,但部分敏感字段(如密码过期时间)会显示为 * 或空。
  2. 账户分类依据

    • 系统账户(-s)和普通用户账户(-u)的UID范围由 /etc/login.defs 中的 SYS_UID_MINSYS_UID_MAXUID_MINUID_MAX 定义,默认系统账户UID < 1000(排除 nobody)。
  3. 日志文件

    • 登录历史(-L)和失败登录(-f)依赖 wtmpbtmp 日志,若日志被清理,相关字段可能为空。
  4. 输出列自定义
    脚本中建议用 -o 指定列(如 lslogins -o USER,UID,LAST_LOGIN --noheadings),避免依赖默认格式。

http://www.dtcms.com/a/334458.html

相关文章:

  • vector 手动实现 及遇到的各种细节问题
  • 深入剖析 TOTP 算法:基于时间的一次性密码生成机制
  • Golang分布式事务处理方案
  • 如何在win服务器中部署若依项目
  • JVM垃圾回收器
  • 深度解析Java synchronized关键字及其底层实现原理
  • python学习DAY43打卡
  • C++实战
  • 如果构建企业本地的ERP智能ai系统,让先进的大模型数据处理ERP的各类数据,更加轻松智能,准确?从企业资源计划ERP变成企业资源智能EPA的升级
  • CUDA 编程笔记:CUDA内存模型概述
  • 【数据库】Oracle学习笔记整理之五:ORACLE体系结构 - 参数文件与控制文件(Parameter Files Control Files)
  • 虚拟专用网技术
  • Gradle#构建生命周期三个阶段
  • PyTorch神经网络工具箱(如何构建神经网络?)
  • 基于几何平面的寻路算法:SPEV1Auxiliary全面解析
  • 数据库Microsoft Access、SQL Server和SQLite三者对比及数据库的选型建议
  • Win11家庭版docker安装Minio
  • HTTP 1.0, 2.0 和 3.0 有什么区别?
  • Day11 栈与队列part2
  • 图论Day4学习心得
  • Git Revert 特定文件/路径的方法
  • 使用openssl创建自签名CA并用它签发服务器证书
  • 技术赋能与深度洞察:北京国标政务窗口第三方调查
  • 【攻防实战】红队攻防之Goby反杀
  • day34-LNMP详解
  • 数据结构:构建 (create) 一个二叉树
  • 【图论】分层图 / 拆点
  • 算法训练营day53 图论④ 110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
  • 树、哈夫曼树以及二叉树的各种操作
  • 【CF】Day128——杂题 (图论 + 贪心 | 集合 + 贪心 + 图论 | 二分答案 + 贪心)