首页/安全/取证与溯源速查/su 切换用户事件判读
Linux 取证135 条

su 切换用户事件判读

su 的会话开启与失败记录在认证日志中,包含源用户、目标用户与 UID;非运维习惯的 su root 是提权链条中的关键节点。

取证与溯源速查安全更新于 2026-10-13

su 提权事件

su 切换身份时 PAM 会向 syslog 写入会话的开始与结束记录,是判断谁在何时取得 root 权限的主要来源。Debian 系写进 /var/log/auth.log,RHEL 系写进 /var/log/secure。su 成功之后执行了什么命令不在这条日志里,需要用审计或 shell 历史补齐。

基本信息

适用平台Linux(util-linux su 加 pam_unix)
日志位置Debian 系 /var/log/auth.log,RHEL 系 /var/log/secure
成功样例su[1234]: pam_unix(su:session): session opened for user root by alice(uid=1000)
失败样例su[1234]: FAILED su for root by alice
sudo 样例alice : TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/bin/bash
权限要求读取需 root 或 adm、wheel 组成员

典型使用场景

  • 判断谁取得过 root 身份、来自哪个终端
  • 区分 su 与 sudo 两条提权路径的使用情况
  • 与登录记录配合还原完整会话窗口
  • 统计失败提权次数,识别口令爆破
  • 合规审计中核对特权账号的使用记录

最小示例

最小示例
grep -E 'su\[|FAILED su' /var/log/auth.log | tail -30                # 成功与失败一并看
grep 'session opened for user root' /var/log/secure | tail -20        # RHEL 系对应文件
grep -E 'sudo:' /var/log/auth.log | tail -20                          # sudo 为命令级记录
grep -c 'FAILED su' /var/log/auth.log                                 # 统计失败次数
last -F | head -10                                                    # 与登录来源交叉核对
journalctl --since today | grep -E 'su\[|sudo' | tail -20              # journal 环境下的兜底查询

输出字段读法

字段含义异常信号
by 后的账号发起切换的用户服务账号或禁用账号发起提权
uid=1000发起者的 uiduid 与账号名对应不上
TTY 字段来源终端与设备来自非常规 tty 或未知 pts
opened/closed会话边界只有 opened 没有 closed
FAILED su认证失败记录同一来源高频失败
COMMAND=sudo 执行的命令直接拉起交互式 shell
su[PID]进程号,方括号内数字同一 PID 反复出现说明复用异常
su 只留下会话边界,具体命令要看 auditd 的 EXECVE 记录,或 root 账号与目标账号的 shell 历史。
日志轮转后旧记录会进入 .1 与 .gz 文件,长时间跨度的事件统计必须把轮转文件一并纳入。
su 与 sudo 写在同一文件里但行格式不同:sudo 行以发起者账号开头,su 行以 su[PID] 开头,提取时两种模式要分别匹配,否则会互相漏掉。
在目标主机上反复执行 su 或 sudo 会持续写入日志并改变会话对象;取证期间尽量只做只读读取,必要时改用离线镜像分析。

易错点

  • 只看成功事件:失败提权的密度与来源是判断爆破的关键,必须一起统计
  • 把 su 与 sudo 混为一谈:sudo 记录命令内容、su 只有会话边界,两者互补而非重复
  • 忽略 session closed:缺少关闭记录意味着系统崩溃或日志被截断,时间窗判断要相应打折
  • 只在一台主机上查:跳板机的 su 记录与目标机的登录记录常共同构成完整链条
  • 把 su 日志当完整命令记录:它只写会话边界,命令需从审计或 shell 历史另取,直接引用会让报告缺少关键环节

数据来源与参考

  • util-linux 手册(su(1))
  • Linux-PAM 文档(pam_unix)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌