mktemp -uが「安全でない」と見なされるのはなぜですか?

mktemp -uが「安全でない」と見なされるのはなぜですか?

--help最近、テキストmktempmanページが利用できません)を読み、次のことがわかりました。

  -u, --dry-run       do not create anything; merely print a name (unsafe)

これが「安全でない」理由は何ですか?このように表示する特別な理由はありますか?

ベストアンサー1

mktempマニュアルを引用すると、ポイントは「一時ファイルまたはディレクトリを安全に生成する」です。デフォルトでは、スクリプトでは次のように書くことができます。

file="$(mktemp)"

または

dir="$(mktemp -d)"

一時ファイルとディレクトリは、コマンドを実行しているユーザー(もちろんほとんどの設定ではルート)だけにアクセスでき、他の項目などへのシンボリックリンクではないことを知っており、必要に応じて安全に使用できます。それでも警告があります。特にシャットダウン状態を確認し、親ディレクトリを安全に使用する必要があります。文書もっと学ぶ。 )

mktemp -uはファイル名の設定とスクリプトの使用を分離するため、この保証は提供しません。これをしないでください。)

dir="$(mktemp -u)"
mkdir "$dir"
chmod 700 "$dir"

mktempとの間にmkdir異なるプロセスが異なる所有権を持つディレクトリを作成できます。あるいは、ファイルの場合、他のプロセスがその場所にファイルを作成したり、シンボリックリンクを作成したりできます。

おすすめ記事