umask XXX(特権ビット)はファイルの実行権限を提供します。

umask XXX(特権ビット)はファイルの実行権限を提供します。

ファイルはデフォルトで666権限で生成され、umaskこの権限からビット単位で(権限ビット単位で)減算されるため、execute権限文字(r、w、x)を使用せずに権限を付与できますか?

私は次のビットマスクを使用することに言及しています。

umask 002

権限文字が設定されていません。

umask u+x
umask u=rwx

答え1

これは不可能です。umask権限をブロックするだけで追加することはありません。したがって、生成されたシステムコールに実際に実行権限が含まれている場合open()にのみ実行権限を取得します。コンパイラが実行可能ファイルを生成する場合がこれに該当します。

答え2

新しいファイルの権限は、呼び出しに使用された権限に基づいて計算されますcreat()

結果umaskは次のとおりです。

$ umask 002
$ umask -S
u=rwx,g=rwx,o=rx

したがって、creat()ファイル権限0777を使用するとrwxrwxrx0666creat()

関連情報