ビルドスクリプトで一意に生成された名前で一時ファイルを生成し、ここにいくつかのデータを書き込んでからファイル名を最終名に変更しようとしています。 )原子)。
ただし、mktemp
以下を使用すると、新しいファイルに非常に厳格な権限が付与されます。
ファイルはu + rwとして生成され、ディレクトリはumask制限を引いたu + rwxとして生成されます。
...ファイル名が変更されても、これらの権限は保持されます。しかし、私は結果ファイルが「一般」権限を持つことを望みます。つまり、touch
シェルリダイレクトで作成されたファイルと同じ権限を持つ必要があります。
これを達成するために推奨される方法は何ですか? (共通)代替案はありますか?または、ファイル権限を一般権限mktemp
に変更する簡単で信頼性の高い方法はありますか?umask
ベストアンサー1
chmod =rw "$file"
一時ファイルが作成されると使用できます。これGNUのマニュアルページ説明する:
モノグラムは、
ugoa
ファイルへのユーザーのアクセス権の変更を制御します。[...]これらのいずれかが提供されていない場合、効果は(a)が提供されていますが、umaskに設定されたビットは提供されません。人工の。
したがって、umaskを介して縮小された読み取りおよび書き込み権限を付与することは、権限引数を渡すのと=rw
似ています。これは、たとえば、または実行する操作です。0666
open()
touch filename
echo > filename
それはPOSIX機能したがって、他の実装でもこれをサポートする必要があります。