「一般」権限で一時ファイルを作成する方法は?

「一般」権限で一時ファイルを作成する方法は?

ビルドスクリプトで一意に生成された名前で一時ファイルを生成し、ここにいくつかのデータを書き込んでからファイル名を最終名に変更しようとしています。 )原子)。

ただし、mktemp以下を使用すると、新しいファイルに非常に厳格な権限が付与されます。

ファイルはu + rwとして生成され、ディレクトリはumask制限を引いたu + rwxとして生成されます。

...ファイル名が変更されても、これらの権限は保持されます。しかし、私は結果ファイルが「一般」権限を持つことを望みます。つまり、touchシェルリダイレクトで作成されたファイルと同じ権限を持つ必要があります。

これを達成するために推奨される方法は何ですか? (共通)代替案はありますか?または、ファイル権限を一般権限mktempに変更する簡単で信頼性の高い方法はありますか?umask

ベストアンサー1

chmod =rw "$file"一時ファイルが作成されると使用できます。これGNUのマニュアルページ説明する:

モノグラムは、ugoaファイルへのユーザーのアクセス権の変更を制御します。[...]これらのいずれかが提供されていない場合、効果は(a)が提供されていますが、umaskに設定されたビットは提供されません。人工の。

したがって、umaskを介して縮小された読み取りおよび書き込み権限を付与することは、権限引数を渡すのと=rw似ています。これは、たとえば、または実行する操作です。0666open()touch filenameecho > filename

それはPOSIX機能したがって、他の実装でもこれをサポートする必要があります。

おすすめ記事