当我以普通用户身份启动“ps”列表时,为什么看不到“ping”进程?
ping 二进制文件有 setuid 位,
ls -l /bin/ping
-rwsr-xr-x 1 root root 64424 jun 28 2019 /bin/ping
在后台运行 ping,
ping google.com > /dev/null &
[1] 28193
当我使用 ps 作为我的用户(enn)查找此进程时,我找不到它,
ps -ef | grep 28193
而如果我使用超级用户,我可以找到它,
sudo ps -ef | grep 28193 | grep -v grep
enn 28193 6878 0 13:49 pts/3 00:00:00 ping google.com
使用附注打印关联的 ID,我可以看到 ping 进程正在使用我的 {u,e,r}id/{g,e,r}id = 66973, 64000 运行
我能看到的唯一区别是苏伊德,设置为 0
sudo ps -e -o pid,uid,gid,euid,egid,ruid,rgid,suid,sgid,cmd | grep 28193 | grep -v grep
28193 66973 64000 66973 64000 66973 64000 0 64000 ping google.com
我无法理解其原因,有人可以帮助我理解我作为普通用户看不到该过程的原因吗?
系统信息:“Ubuntu 18.04.6 LTS”
预先感谢,娜迦
答案1
在这里工作得很好(Fedora 34)。在我的 Gnome 终端的一个选项卡上运行ping 8.8.8.8
,在另一个选项卡上运行:
$ pgrep ping
295323
$ ps -ef | grep 295323
user 295323 3772 0 18:50 pts/4 00:00:00 ping 8.8.8.8
user 295628 3726 0 18:53 pts/3 00:00:00 grep --color=auto 295323
你确定你没有把PID复制错吗(我身上大约有一半的情况发生过)?仍在ping
运行(例如,如果找不到目标,它就会停止运行)?