GNU/Linux >> Linux の 問題 >  >> Linux

なぜ mktemp が必要なのですか?

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」は法案に適合します:)


Linux
  1. 制御が必要なためにLinuxに切り替えた理由

  2. ipのifconfigを削除する必要がある理由

  3. Df対Du:なぜそんなに違いがあるの??

  1. ファイルをペンドライブにコピーしているときにPCがフリーズするのはなぜですか?

  2. プロセスが親の環境を継承する場合、なぜエクスポートが必要なのですか?

  3. C の clock() が 0 を返す理由

  1. ファイルにリダイレクトするときに stdout を明示的にフラッシュする必要があるのはなぜですか?

  2. 組み込みデバイスにブートローダーが必要なのはなぜですか?

  3. Linux で .so.1 ファイルが必要なのはなぜですか?