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

Linux如何查询用户操作日志

使用history命令查看当前用户的命令历史记录,通过last命令检查用户登录日志,查阅/var/log/auth.log等系统日志获取详细操作信息,管理员可用auditd框架进行高级审计。

在Linux系统中,查看用户操作记录是系统管理和安全审计的关键任务,无论是排查故障、监控异常行为,还是满足合规要求,管理员都需要掌握多种方法,以下是详细的操作指南,涵盖常用命令、日志文件及高级审计工具,所有操作均需root权限(使用sudo或切换root用户)。


查看单个用户的命令历史(history)

适用场景:追溯某用户执行的命令。

实现方法

  1. 直接查看当前用户的命令历史

    history

    输出示例:

    1024 cd /var/log 1025 cat syslog 1026 sudo reboot
  2. 查看其他用户的命令历史

    每个用户的命令记录存储在~/.bash_history文件中:

    sudo cat /home/username/.bash_history

    注意

    • 默认仅存储最近1000条命令(由HISTSIZE环境变量控制)。
    • 用户可能清空记录(history -c),或禁用历史记录(设置HISTFILE=/dev/null)。


查看用户登录记录(last命令)

适用场景:审计用户登录/登出时间及来源IP。

命令示例

last

输出示例:

user1 pts/0 192.168.1.100 Mon Oct 10 09:15 - 12:30 (03:15) root tty1 Mon Oct 10 08:00 still logged in

关键参数

Linux如何查询用户操作日志 第1张

  • last -x:显示关机/重启记录。
  • last -i:显示IP地址(替代主机名)。
  • last username:仅查看指定用户的记录。

    数据来源:/var/log/wtmp(二进制文件,不可直接编辑)。


分析系统日志文件

系统日志是用户操作的权威记录,主要文件如下:

认证日志(用户登录/授权)

  • Ubuntu/Debian:/var/log/auth.log
  • CentOS/RHEL:/var/log/secure

查看示例

sudo grep "user1" /var/log/auth.log Oct 10 09:15:00 server sshd[1234]: Accepted password for user1 from 192.168.1.100 port 54322 Oct 10 12:30:00 server sudo: user1 : TTY=pts/0 ; COMMAND=/sbin/reboot

系统日志(syslog)

路径:/var/log/syslog 或 /var/log/messages

用途:记录所有系统级事件,包括用户通过sudo执行的命令。

sudo grep "COMMAND" /var/log/syslog


高级审计工具(auditd)

适用场景:实时监控特定用户或文件的操作,满足企业级安全审计需求。

安装与启动

sudo apt install auditd # Debian/Ubuntu sudo yum install audit # CentOS/RHEL sudo systemctl start auditd && sudo systemctl enable auditd

监控指定用户的所有操作

sudo auditctl -a exit,always -F arch=b64 -F auid=1000 -S execve

  • -F auid=1000:监控用户ID为1000的用户(通过id -u username获取UID)。
  • -S execve:记录执行的命令。

查看审计日志

sudo ausearch -ua 1000 -i # 按用户ID查询(-i显示可读信息) sudo aureport -x --summary # 生成可执行命令报告

日志路径:/var/log/audit/audit.log

Linux如何查询用户操作日志 第2张

永久监控配置

编辑/etc/audit/rules.d/audit.rules,添加:

-a always,exit -F arch=b64 -F auid=1000 -S execve

重启服务:sudo systemctl restart auditd


其他工具补充

  1. acct(进程统计工具)

    安装:sudo apt install acct

    查看命令记录:

    sudo lastcomm -u user1 # 显示user1执行过的命令
  2. who 和 w

    • who:当前登录用户列表。
    • w:当前登录用户及正在执行的命令。


总结与建议

  • 基础排查:优先使用history和last,快速获取命令和登录历史。
  • 安全审计:依赖系统日志(/var/log/auth.log或/var/log/secure)。
  • 合规要求:部署auditd实现精细化监控。
  • 注意事项
    • 日志可能被轮转(如logrotate),长期记录需配置归档。
    • 敏感操作建议结合多工具验证(如auditd+系统日志)。
    • 定期备份日志,防止恶意改动。

引用说明: 参考Linux官方文档(kernel.org)、auditd手册页(auditd.org)及Red Hat系统管理指南,实践命令基于Ubuntu 22.04和CentOS 9环境验证。

Linux如何查询用户操作日志 第3张

0