システムコール "open"モードが機能しません。

システムコール

私はフラグ付きのファイルを開くための簡単なコードを書いていますO_CREAT | O_WDONLY | O_EXCL。コードは次のとおりです。

int fd = open(fileName, O_WRONLY | O_CREAT | O_EXCL, 0777);

モード(特権)部分を除いてうまく機能します。他のセクションに何を入れても、常にr-x

たとえば、上記のコードで生成されたファイルの権限は次のとおりです。

rwxrwxr-x.

そうではありませんか777?私は何を見逃していますか?

ベストアンサー1

~へumaskファイルが生成されると、現在のプロセスに関する情報が削除されます。この場合、umaskが(世界が記録されていない)ように見えます0002。呼ぶumask()電話open()して変える前に。

Soapbox: 以下以外では、誰でも書き込み可能なファイルを生成しないでください。本物もちろんそれがあなたが望むものです。 umaskこれらの脆弱性からあなたとあなたのユーザーを保護するために存在します。

おすすめ記事