「mktemp」を使用して一時ファイルを安全かつ移植可能にするには、「X」をいくつか使用する必要がありますか?

「mktemp」を使用して一時ファイルを安全かつ移植可能にするには、「X」をいくつか使用する必要がありますか?

場合によってはmktemp、6つ以上の引数を含むコマンドを呼び出して、シェルスクリプトから一時ファイルを生成します。ただし、異なる数値を持つコマンドが見つかったため、この数値が他の実装に適用されるかどうかはわかりません(例:XTEMPLATEmktempここここここ)。

私はいくつかの調査を行い、次の事実を見つけました。

  • GNUの実装ではmktemp3つ以上X

  • OpenBSDの実装にはmktemp6が必要なようですX。しかし、私はほとんど知りません。基本コードする。

  • FreeBSD実装マニュアルmktempコマンドと機能Xどのくらいのテンプレートが必要かは非常にあいまいです。

答え1

移植可能なオプションは6つ以上です。これは、これがmkstemp(3)実行されシミュレーションされる動作であるためです。ただし、一部のシステムでは、6より多く指定した場合は末尾の6のみが使用され、残りはそのまま残りますX。それにもかかわらず、CSPRNGが内部的に使用されている場合、攻撃者がプロセスをDoSするのを防ぐには6つで十分です。

一部のシステム(GNUツールを使用するLinuxなど)では、移植可能でなくてもテンプレートを完全に削除できます。ほとんどのシステムには、テンプレートまたはプレフィックスが付いたファイルが必要です-t。必要なファイルがにない場合は、$TMPDIRテンプレートが必要です。少なくともFreeBSDとmacOSでは。

mktemp(1)POSIXではこれを要求しないため、一部のシステムではこれをまったくサポートしていない可能性があります。ただし、広く使用されており、少なくともLinux、macOS、FreeBSD、NetBSD、OpenBSD、HP-UX、およびSolarisに存在するため、GNU coreutilを持たないシステムにGNU coreutilをインストールするように簡単に言うことができます。

関連情報