しらいです。

In article <060708154232.M0101579@osabishi.ics.nara-wu.ac.jp>,
NIDE Naoyuki <nide@ics.nara-wu.ac.jp> wrote:
>  その方式だと、一時ファイルの名前を予測されて、先回りしてその名前で任意
>の内容のファイルを作成されてしまう攻撃への対処も考慮しなくちゃならないで
>すね。mktemp(1)あたりがあれば安全かつ便利に一時ファイルを作成できるでしょ
>うけど、どこにでもあるわけではないし。なので、私は一時ファイルは、作らず
>に済ませられるなら作らない方針をとっています。どうしても必要な場合は/tmp
>下に700でmkdirし、そこに一時ファイルを作れば、終了時あるいは割り込まれた
>際の後始末はrm -rfで一発。

 注意していても、その制御している shell 自身が一時ファイル
を作成することもあるので、気づかないうちに作成されるよりは自
分で明示的に作成した方がましなこともあります。
 例えば Bourne shell は結構頻繁に一時ファイルを作りますし、
here document の実装では一時ファイルに頼るものが少なくありま
せん。


 mktemp(1) がない場合、UNIX 的な対応策としては作った直後に
削除という手があるでしょうか。
 exec を使って一時ファイルの入出力を適当な file descriptor
に割振ったらさっさとファイルそのものは削除してしまいます。こ
れでその shell script 以外からは参照出来ません。

#!/bin/sh
exec 4>/tmp/$0.$$ 5</tmp/$0.$$
rm -f /tmp/$0.$$
ls 1>&4
while read line 0<&5; do
        echo ${line}
done

 尤も、この手法は一時ファイルを何度も開いたり閉じたりしない
とならない時には使えませんし、攻撃者がファイルを開いたまま待
機してると無意味なので、常に有効という訳ではありませんけど。
 csh 系では使えませんが、sh 系 shell を常用してる人は TIPS
として憶えておくと嬉しいかも。

-- 
                                               しらい たかし