一般ユーザーとして「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を印刷すると、{u、e、r}id / {g、e、r}id = 66973、64000でpingプロセスが実行されていることがわかります。
私が見ることができる唯一の違いはスエイド、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端末の1つのタブ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
(ターゲットが見つからない場合は実行が停止します)。