mktemp
一時ファイルは適当にmkdir /tmp/hoge.tmpで作るよりもmktempを使った方がよい mktemp
既存のファイルを上書きしない
競合しない
…とあるが、実際には推測可能なので競合しづらい、くらい?
一時ファイル置き場にむやみに/tmpを使わない
誰でも参照できる
ファイルのモードは必ず0700になる
ファイル内容が漏洩しない
ヘルプを見てみる
code:console
$ mktemp --help
Create a temporary file or directory, safely,
略
Files are created u+rw, and directories u+rwx, minus umask restrictions.
早くなるらしい
なぜ早い?(2020/07/31)
ストレージを使わない
I/Oが多い処理で使うと効果的
容量をあらかじめ確保するのではなく、使用した分で変化する
mktempよりmkstempを使うべき?
セキュリティホールが生まれてしまう?
シンボリックリンク攻撃の話ではないよな
決してこの関数は使用しないこと。「バグ」を参照。
mktemp() を決して使わないこと。4.3BSD 系の実装や XXXXXX を プロセス ID と1文字により置き換える方式ではせいぜい26の名前を返す ことができるにすぎない。 この名前は簡単に推測できることや、その名前がすでに存在しているかどうか テストして、そのファイルをオープンする間に競合がある事から、 mktemp() を使うのは毎回セキュリティリスクをおかすことになる。 この競合は mkstemp(3) や mkdtemp(3) を使うことで避けられる。
これのことかな
参考