mktemp
名前をランダム化します。セキュリティの観点から非常に重要です。
次のようなことをすると想像してみてください:
echo something > /tmp/temporary-file
ルート実行スクリプトで。
そして誰か (あなたのスクリプトを読んだ人) はそうします
ln -s /etc/passwd /tmp/temporary-file
この結果は /etc/passwd
になります 上書きされる可能性があり、システムが壊れてシステムがハッキングされるなど、さまざまな不快なことが起こる可能性があります (入力 something
慎重に作成できます)。
mktemp
コマンドは、この状況で役立ちます:
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
さて、この ln /etc/passwd
攻撃は機能しません。
mktemp の歴史についての簡単な洞察 :mktemp
コマンドは OpenBSD 関係者によって発明され、1997 年に OpenBSD 2.1 で初めて登場しました。彼らの目標は、シェル スクリプトのセキュリティを向上させることでした。以前は $$
を追加するのが標準でした これは絶対に安全ではありませんでした。現在、すべての UNIX/Linux システムには mktemp
のいずれかがあります。 またはその代替手段となり、事実上の標準になりました。おかしなことに、mktemp
C 関数は安全ではないため廃止されました。
「スクラッチパッド ファイル」(またはディレクトリ) が必要になることがよくあります。さらに、そのようなファイルが同時に複数必要になる場合がありますが、それらのファイルに名前を付ける方法を考えるのは面倒なので、競合が発生することはありません。
「mktemp」は法案に適合します:)