mktemp
の機能と一時ファイルの意味がわかりません。
Say touch xyz
とmktemp xyz
の違いは何ですか(mktemp
はxxxが追加されたファイルを作成し、600のアクセス許可を持つという事実は別ですか?)
どうか明らかにしてください。
mktemp
は、名前をランダム化します。セキュリティの観点から非常に重要です。
次のようなことをすると想像してください。
echo something > /tmp/temporary-file
ルート実行スクリプトで。
そして、あなたのスクリプトを読んだ人が
ln -s /etc/passwd /tmp/temporary-file
前。
mktemp
コマンドは、この状況で役立ちます。
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
今、このln /etc/passwd
攻撃は機能しません。
多くの場合、「スクラッチパッドファイル」(またはディレクトリ)が必要です。さらに、このようなファイルを同時にいくつか必要とする場合がありますが、競合が発生しないようにそれらの名前の付け方を考えたくない場合があります。
「mktemp」は法案に適合します:)
わかりました。実際、マニュアルページに明確に記載されています。
mktemp-一時ファイルまたは一時ディレクトリを作成します。
安全に一時ファイルまたはディレクトリを作成し、その名前を出力します。
ファイルまたはディレクトリを安全に作成するため、他のユーザーはアクセスできません。そのため、アクセス許可は600です。
touch-ファイルのタイムスタンプを変更する
すでに作成されている場合はファイルのタイムスタンプを変更し、存在しない場合はファイルを作成します。ただし、デフォルトではファイル許可はまだ644です。
詳細については、次のmanページを確認してください。
さらにもう1つの理由:すべてのシステムが/tmp
一時ディレクトリとして。たとえば https://termux.com/ は技術的な理由により(Android内でプロセスとして実行されます)、tmpディレクトリであるため、長いパスが異なります。
mktemp
を使用して一時ファイルまたは一時ディレクトリを作成するスクリプトは移植性があり、そのような特別な環境でも機能します。
少なくともbashシェルでは、次のようなことができます。
dirpath="/tmp/dir1-$$/dir2-$$"
mkdir -p $dirpath
chmod -R 0700 /tmp/dir1-$$
例えば。