You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux中如何查找sudo启动root进程的原始用户?

如何找到sudo启动的root进程背后的原始用户

当你用sudo htop启动进程后,ps aux只能看到root身份的进程,这很正常——毕竟sudo就是用来提权的。不过要找到背后的原始用户,有几个实用的方法:

方法1:用进程树追溯父进程

sudo是从你的原始用户shell里启动的,所以通过进程树可以直接看到溯源关系:

  • 运行pstree -u htop,输出会显示进程链和对应的用户,比如:
    bash(alice)───sudo(root)───htop(root)
    
    这里括号里的alice就是原始用户。
  • 或者用pstree -s htop,它会显示从根进程到htop的完整路径,找到倒数第二个bash进程,对应的用户就是原始用户。

方法2:读取进程的环境变量

sudo启动进程时,会把原始用户信息存在SUDO_USER环境变量里,你可以直接读取htop进程的环境文件:

  1. 先拿到htop的PID(比如你例子里的21187)
  2. 运行命令:
    cat /proc/21187/environ | tr '\0' '\n' | grep SUDO_USER
    
    输出会是SUDO_USER=你的用户名,直接得到结果。

方法3:通过父进程ID反查

每个sudo进程都有一个父进程(就是你原始用户的shell),可以一步步反查:

  1. 先找到sudo进程的PID(比如你例子里的21186),然后看它的父进程ID(PPID):
    ps -o ppid= -p 21186
    
  2. 用这个PPID查询对应的用户:
    ps -o user= -p [刚才得到的PPID]
    
    返回的就是原始用户的用户名。

这几个方法都能快速定位到原始用户,其中方法2最直接,因为sudo已经帮你把信息存在环境变量里了~

内容的提问来源于stack exchange,提问作者hhy

火山引擎 最新活动