Linux系统用户登录监控与管理的5种实用方法

发布时间:2026/7/17 8:11:19

Linux系统用户登录监控与管理的5种实用方法
1. 系统用户信息查看方法概述在Linux系统管理中了解当前登录用户的情况是基础但至关重要的操作。无论是排查异常登录、进行系统维护还是分析资源占用情况掌握用户登录信息都能提供第一手资料。我管理过上百台服务器经常需要快速确认哪些用户在系统中活动以及他们的操作状态。系统登录信息主要存储在几个关键文件中/var/run/utmp记录当前登录用户信息/var/log/wtmp记录历史登录信息/var/log/lastlog记录所有用户最后一次登录信息这些二进制文件不能直接用文本编辑器查看需要通过特定命令解析。下面我将详细介绍5种最实用的查看方法包含它们的输出解读和实际应用场景。2. 五种核心查看方法详解2.1 w命令 - 最全面的当前活动监控w命令是我日常使用频率最高的工具它能显示当前系统时间系统运行时长登录用户数每个用户的登录终端来源IP如果是远程登录登录时长空闲时间当前进程占用的CPU时间正在执行的命令典型输出示例10:30:45 up 15 days, 3:22, 3 users, load average: 0.08, 0.03, 0.01 USER TTY FROM LOGIN IDLE JCPU PCPU WHAT john pts/0 192.168.1.100 09:15 5.00s 0.05s 0.00s sshd: john [priv] alice pts/1 192.168.1.101 10:20 1:05 0.10s 0.10s -bash root pts/2 192.168.1.102 10:25 0.00s 0.20s 0.10s top注意w命令显示的CPU时间是累计值如果看到某个用户的JCPU值异常高可能表示该用户正在运行资源密集型任务。高级用法w -h不显示头部信息适合脚本处理w -u更精确计算CPU时间w -s使用短格式输出2.2 who命令 - 简洁的用户登录概览当只需要基本的登录信息时who命令更加轻量高效。它显示用户名登录终端登录时间来源IP如果是远程登录典型输出john pts/0 2023-03-15 09:15 (192.168.1.100) alice pts/1 2023-03-15 10:20 (192.168.1.101) root pts/2 2023-03-15 10:25 (192.168.1.102)实用技巧结合grep快速查找特定用户who | grep alice统计当前登录用户数who | wc -l查看系统启动时间附加参数who -b2.3 last命令 - 历史登录记录审计last命令从/var/log/wtmp读取数据显示历史登录记录对安全审计特别有用。它能显示用户名登录终端来源IP登录/登出时间会话持续时间典型输出john pts/0 192.168.1.100 Wed Mar 15 09:15 still logged in alice pts/1 192.168.1.101 Wed Mar 15 10:20 still logged in root pts/2 192.168.1.102 Wed Mar 15 10:25 still logged in john pts/0 192.168.1.100 Tue Mar 14 14:30 - 17:45 (03:15)关键参数last -n 5仅显示最近5条记录last -x显示系统关机/重启记录last -a在最后列显示主机名last username查看特定用户记录2.4 lastlog命令 - 检查用户最后登录时间lastlog命令检查/var/log/lastlog文件显示所有用户的最后一次登录信息特别适合检查长期未使用的账号验证账号是否曾被使用过审计用户活动情况典型输出Username Port From Latest root pts/2 192.168.1.102 Wed Mar 15 10:25:01 0800 2023 john pts/0 192.168.1.100 Wed Mar 15 09:15:32 0800 2023 alice pts/1 192.168.1.101 Wed Mar 15 10:20:18 0800 2023 nobody **Never logged in**实用技巧检查特定用户lastlog -u john配合grep过滤从未登录的用户lastlog | grep Never logged in2.5 直接解析utmp/wtmp文件对于需要深度定制的场景可以直接使用工具解析二进制日志文件使用utmpdump查看原始内容utmpdump /var/run/utmp输出示例[7] [03678] [ ] [john ] [pts/0] [192.168.1.100] [10.0.0.100 ] [1689372900] [0] [0] [10.0.0.100]使用awk等工具处理lastlogawk -F: {print $1,$5} /etc/passwd | while read user uid; do lastlog -u $user | grep -v Never logged in done3. 高级应用场景与问题排查3.1 强制断开异常用户连接当发现可疑登录时可以结合ps和kill命令终止会话先确认目标用户的进程ps -ft pts/1终止相关进程sudo kill -9 PID也可以直接kill所有该用户的进程sudo pkill -u username重要强制断开用户连接可能导致数据丢失生产环境应先通知用户保存工作。3.2 处理用户信息显示异常常见问题及解决方法用户名显示不全检查/etc/passwd中用户名是否包含特殊字符确认终端支持UTF-8编码IP地址显示不正确可能是NAT或代理导致检查ss -tnp | grep sshd确认真实连接时间显示异常确保系统时区设置正确timedatectl检查日志文件是否损坏sudo last -f /var/log/wtmp.13.3 安全审计实践建议的日常安全检查流程每周检查一次异常登录last | grep -v still logged in | awk {print $3} | sort | uniq -c | sort -n每月检查长期未使用的账号lastlog | grep Never logged in设置登录提醒在/etc/profile中添加echo Last login: $(last -n1 -i $USER | head -n1 | awk {print $4,$5,$6,$7})4. 实用脚本与自动化监控4.1 登录用户监控脚本保存为monitor_users.sh#!/bin/bash # 监控异常登录的脚本 ALERT_EMAILadminexample.com KNOWN_IPS(192.168.1.100 192.168.1.101) current_users$(who | awk {print $5} | tr -d () | sort | uniq) for ip in $current_users; do if [[ ! ${KNOWN_IPS[]} ~ ${ip} ]]; then echo Alert: Unknown IP $ip logged in | mail -s Security Alert $ALERT_EMAIL fi done设置cron定时任务每30分钟检查一次*/30 * * * * /path/to/monitor_users.sh4.2 用户活动报告生成生成每日登录报告#!/bin/bash REPORT_FILE/var/log/user_activity_$(date %Y%m%d).log { echo 每日用户活动报告 $(date) echo 当前登录用户 w -h echo echo 最近登录记录 last -n 10 echo echo 从未登录的用户 lastlog | grep Never logged in } $REPORT_FILE5. 系统配置优化建议5.1 日志文件管理默认配置的日志轮转可能不够建议调整/etc/logrotate.conf/var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 12 } /var/log/btmp { monthly minsize 1M create 0600 root utmp rotate 12 }5.2 增强日志记录在/etc/ssh/sshd_config中添加LogLevel VERBOSE PrintLastLog yes5.3 用户登录限制限制root直接登录sudo sed -i s/#PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config设置空闲会话超时在/etc/profile中添加export TMOUT1800 # 30分钟无操作自动退出掌握这5种方法后你就能全面监控系统用户活动。在实际运维中我通常会结合使用这些命令比如先用w快速查看当前状态再用last进行历史分析。记得定期检查日志文件大小避免因日志过大影响系统性能。

相关新闻

CANN/asc-devkit:Ascend C开发工具包

CANN/asc-devkit:Ascend C开发工具包

2026/7/17 8:11:19

__hnex2 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…

CANN/asc-devkit SIMT bfloat16x2最小值函数

CANN/asc-devkit SIMT bfloat16x2最小值函数

2026/7/17 8:11:19

__hminx2 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/c…

CANN/asc-devkit bfloat16x2掩码不等比较函数

CANN/asc-devkit bfloat16x2掩码不等比较函数

2026/7/17 8:11:19

__hneux2_mask 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.…

SOLID原则:写出好代码的五大准则

SOLID原则:写出好代码的五大准则

2026/7/17 9:31:22

540|SOLID原则:写出好代码的五大准则 你写过这样的代码吗? class User {validate() {... }save() {... }

深入理解Hono OpenAPI中间件:从validator到describeRoute的使用详解

深入理解Hono OpenAPI中间件:从validator到describeRoute的使用详解

2026/7/17 9:31:22

深入理解Hono OpenAPI中间件:从validator到describeRoute的使用详解 【免费下载链接】hono-openapi Hono middleware to generate OpenAPI Swagger documentation 项目地址: https://gitcode.com/gh_mirrors/ho/hono-openapi Hono OpenAPI是一款强大的中间件…

设计模式:那些让代码更优雅的套路

设计模式:那些让代码更优雅的套路

2026/7/17 9:31:22

539|设计模式:那些让代码更优雅的套路 代码写多了,你会发现: 有些问题反复出现,解决思路是类似的。 比如: 创建对象太复杂 → 封装创建过程(工厂模式) 一个类做太多事 → 拆成多个类(职责分离) 要给类加功能 → 不改原类,用扩展(装饰器模式) 这些套路,就是设计…

支付中台2-微信支付

支付中台2-微信支付

2026/7/17 9:31:22

1. 微信支付流程1.1 支付方式 付款码支付JSAPI支付小程序支付Native支付:商家预先指定付款金额APP支付刷脸支付 1.2 接入指引 1.2.1 获取商户号 微信商户平台:https://pay.weixin.qq.com/ 操作步骤: 提交资料签署协议获取商户号1.2.2 获取APP…

格式检测总不合格?2026年论文格式自动纠错工具PaperRed实战测评

格式检测总不合格?2026年论文格式自动纠错工具PaperRed实战测评

2026/7/17 9:31:22

一句话答案:2026年论文格式检测最易出错的10个细节——页边距、行距、字体、参考文献、目录、图表编号、页眉页脚、页码、引用格式、章节编号——PaperRed格式检测功能可一键定位并自动修复。很多同学论文内容写得不错,却在格式检测环节栽了跟头。导师一…

Windows 11 PowerShell别名配置与高效使用指南

Windows 11 PowerShell别名配置与高效使用指南

2026/7/17 9:21:22

1. Windows 11中的PowerShell别名基础在Windows 11的PowerShell环境中,别名(alias)是一个极其实用的功能,它允许用户为复杂的命令或常用操作创建简短的替代名称。想象一下,你每天都要输入"Get-ChildItem"来查…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/16 0:35:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/16 14:29:31

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/16 14:18:17

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

Cursor终端插件生态避坑指南:23个实测低效插件黑名单,附3个自研轻量替代方案

Cursor终端插件生态避坑指南:23个实测低效插件黑名单,附3个自研轻量替代方案

2026/7/17 0:00:57

更多请点击: https://intelliparadigm.com 第一章:Cursor终端插件生态避坑指南概览 Cursor 作为基于 VS Code 内核构建的 AI 原生编辑器,其终端插件生态虽活跃,但存在兼容性断层、权限策略突变与调试链路断裂等典型风险。开发者常…

ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表)

ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表)

2026/7/17 0:00:57

更多请点击: https://codechina.net 第一章:ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表) 提示词工程已从经验试错迈入变量驱动的科学阶段。实证研究表明,影响…

DeepSeek V4替换Codex底座模型的实践与优化

DeepSeek V4替换Codex底座模型的实践与优化

2026/7/17 0:00:57

1. 为什么选择用DeepSeek V4替换Codex的底座模型去年我在开发一个智能代码补全工具时,发现Codex的默认底座模型在复杂业务逻辑场景下表现不尽如人意。经过多次测试对比,DeepSeek V4在以下几个关键指标上展现出明显优势:代码补全准确率&#x…