yum history info 不显示 uid 和原始命令,因其历史数据库仅存事务id、时间、用户(非uid)、操作摘要和包列表,不记录uid数值或完整命令行;需结合auditd日志查询。

直接用 yum history info 查不到发起者 UID 和原始触发命令——它只显示事务 ID、时间、操作类型、用户(通常是用户名,如 root),但不记录 UID 数字或当时执行的完整命令行。
为什么看不到 UID 和原始命令
YUM 历史数据库(/var/lib/yum/history/ 下的 SQLite 文件)默认只存储以下字段:
- 事务 ID、开始/结束时间
- 执行用户(
loginuid字段在部分系统中存在,但 yum 不解析也不展示) - 操作摘要(如
Install httpd-2.4.6-97.el7.x86_64) - 软件包列表与状态变更
它不保存:发起进程的 UID 数值、shell 环境变量、完整命令行(如 yum install -y httpd --enablerepo=epel)。
替代方案:结合系统审计日志查 UID 和命令
要定位某次 yum 操作的真实 UID 和触发命令,需依赖 Linux 审计子系统(auditd),前提是它已启用并配置了规则:
- 确认 auditd 正在运行:
sudo systemctl is-active auditd - 检查是否监控了 yum 可执行文件:
sudo auditctl -l | grep '/usr/bin/yum' - 若未监控,可临时添加:
sudo auditctl -a always,exit -F path=/usr/bin/yum -F perm=x - 查询关联记录(用事务时间缩小范围):
sudo ausearch -m execve -ts '2026-05-23 14:30:00' -i | grep -A2 -B2 yum
输出中会包含:uid=0(即 root 的 UID)、exe="/usr/bin/python"(实际调用者)、cmd="yum install httpd"(原始命令)。
从 yum.log 中提取有限线索
/var/log/yum.log 记录时间、操作和包名,但不带 UID 或命令:
- 查看某包相关日志:
grep "httpd" /var/log/yum.log | tail -10 - 典型条目:
May 23 14:32:17 Installed: httpd-2.4.6-97.el7.x86_64 - 该行隐含执行者是当前登录用户(通常为 root),但无法区分是
su -c还是sudo,也无法得知 UID 是否为 1001(普通用户)
增强记录的长期建议
若需持续追踪 UID 与命令,推荐以下组合配置:
- 启用 auditd 并持久化规则(写入
/etc/audit/rules.d/yum.rules) - 在 shell 配置中启用命令日志(如
HISTTIMEFORMAT="%F %T "+export PROMPT_COMMAND记录到独立文件) - 避免直接用 root 登录,统一通过
sudo执行 yum,并开启sudoers的log_input和log_output选项
这样就能把一次 yum 操作完整映射到 UID、终端、命令、时间四要素。











