要查看系统管理员切换到 root 的操作日志,需重点检索 sudo、su 和 login 相关的 pam 认证记录,这些日志由 systemd-journald 收集并归类于 auth 类服务或系统单元中,可通过 journalctl -u systemd-logind、_comm=sudo、_comm=su 等命令精准过滤,结合时间范围与关键词(如 root、uid=0)提升效率,并确保日志持久化存储以避免重启丢失。

要查看系统管理员切换到 root 的操作日志,关键不是找“root 登录”,而是抓取 sudo、su 和 login 相关的认证行为,这些记录通常由 pam 模块写入 systemd-journald,并归类在 auth 类服务或内核/系统单元中。
重点查 auth 日志来源
Linux 中提权操作(如 sudo su、sudo -i、su -)会触发 PAM 认证,相关日志默认由 systemd-logind 或 polkit 服务生成,也常出现在 audit(若启用)或 sshd(远程场景)中。journalctl 本身不区分“管理员”身份,但可通过以下方式定位:
-
journalctl -u systemd-logind— 查看用户会话登录/切换行为(含图形、TTY、sudo 触发的 session) -
journalctl _COMM=sudo— 直接筛选所有 sudo 命令执行记录(含谁、何时、执行了什么) -
journalctl _COMM=su— 查看 su 切换用户(包括 su -、su root)的日志 -
journalctl SYSLOG_IDENTIFIER=sshd— 若通过 SSH 远程登录后提权,可结合-o verbose看完整上下文
按时间+关键词精准过滤
避免翻全量日志,推荐组合使用:
journalctl --since "1 hour ago" _COMM=sudo | grep -i "root\|uid=0"-
journalctl -b _COMM=su -o short-precise— 本次启动内所有 su 行为,带微秒时间戳 -
journalctl -u sshd --since today | grep -E "(sudo|su|root)"— 远程场景下缩小范围
注意权限与持久化配置
普通用户默认看不到其他用户的 sudo/su 日志(涉及隐私和安全),必须用 sudo journalctl;另外确保日志已持久化,否则重启后可能丢失历史记录:
- 检查是否启用持久存储:
ls /var/log/journal/(存在即已开启) - 若为空,需编辑
/etc/systemd/journald.conf,设Storage=persistent并重启 journald:sudo systemctl restart systemd-journald
补充:对比传统日志路径
部分发行版仍同步写入传统文本日志,可交叉验证:
-
sudo grep "sudo.*root\|su.*root" /var/log/auth.log(Debian/Ubuntu) -
sudo grep -i "session opened.*uid=0" /var/log/secure(RHEL/CentOS/Fedora)











