psmiscパッケージに入っているpeekfdコマンドを使うと、任意のプロセスの全ファイルディスクリプタへの読み書きを監視(内容を盗聴)することができる。
実行例:
あるシェルからこれを実行
$ echo $$; while true; do echo hoge; sleep 1;done
3457
hoge
hoge
hoge
このシェルのPIDは3457と分かったので、別のシェルからrootでpeekfdを実行する:
# peekfd 3457
writing fd 1:
hoge
hoge
hoge
echo hogeによる標準出力への書き込みを盗聴できている。
3457のシェルでwhileループを止めてキー入力すれば、キー入力も盗聴できる。
/proc/{PID}/fdの中を見ればfd何番がどのファイルか分かる。