在 Linux 系统中,查看用户历史记录通常涉及两类核心数据:用户执行过的 Shell 命令历史和用户的登录与操作日志。以下针对这两种场景分别给出专业、准确的查看方法。

一、查看 Shell 命令历史记录
Linux 默认的 Bash Shell 会记录用户在当前终端会话中执行的命令,并将其保存在用户主目录下的隐藏文件 ~/.bash_history 中(如果使用 Zsh 则为 ~/.zsh_history)。直接使用 cat、less 或 tail 命令即可查看该文件的内容,例如:cat ~/.bash_history。注意,该文件仅在用户正常退出终端时才会被写入,未退出的会话历史可能暂存于内存中。
更常用的方法是使用内置的 history 命令,它可以从内存和文件中读取当前用户的完整命令历史,并显示带序号的列表。执行 history 即可查看,加 | head -n 20 可只显示最近 20 条。若需查看特定用户的历史记录,则需要切换到该用户身份(如 su - username)后执行 history,或直接读取该用户的 ~/.bash_history 文件(需要相应权限)。
另外,历史记录的文件位置和大小受环境变量 HISTFILE(默认 ~/.bash_history)、HISTSIZE(历史条数)、HISTFILESIZE(文件最大行数)控制。可通过 echo $HISTFILE 等命令查看当前用户的配置。如果需要查看系统全局的历史记录(例如所有用户的历史),Linux 本身没有内置的全局命令历史文件,但可以结合 auditd 审计系统或 script 命令进行更细粒度的操作记录。
二、查看用户登录与操作历史记录
1. last 命令:读取 /var/log/wtmp 二进制日志文件,显示所有用户的登录、登出时间及登录来源 IP。执行 last 即可查看完整列表,last username 可过滤特定用户,last -n 10 显示最近 10 条。该文件记录的是登录会话,而非具体命令。
2. lastlog 命令:查看 /var/log/lastlog 文件,显示每个用户最近一次登录的时间与 IP。执行 lastlog 显示所有用户,lastlog -u username 查看特定用户。
3. lastb 命令:读取 /var/log/btmp 文件,记录失败登录尝试。可用于排查暴力破解或异常登录。
4. ac 命令:基于 /var/log/wtmp 统计用户的总连接时间(需安装 acct 包)。执行 ac -p 显示每个用户的累计登录时长。
5. journalctl 命令:对于使用 systemd 的系统,可使用 journalctl -u sshd 查看 SSH 登录日志,或 journalctl _UID=1000 查看特定用户 ID 的日志(包括命令执行(如通过 auditd)等)。
6. auditd 审计系统:如果系统启用了 auditd,可通过 ausearch -ua username 或 aureport --user 查看该用户的所有操作系统调用记录,包括执行的命令、文件访问等,这是最全面的用户操作历史记录方式。
三、注意事项
普通用户只能查看自己的 Shell 命令历史(history 或 ~/.bash_history),而查看其他用户的登录历史(如 last、lastlog)通常需要 root 权限。此外,用户可以通过 history -c 清空当前会话的历史,或设置 HISTFILE=/dev/null 禁用记录,因此历史记录并非绝对可靠。在安全审计场景中,建议结合 auditd、syslog 或专门的日志收集工具(如 rsyslog + logrotate)实现不可篡改的记录。

查看详情

查看详情