ACL / umaskはgccで生成された実行可能ファイルの権限にどのような影響を与えますか?

ACL / umaskはgccで生成された実行可能ファイルの権限にどのような影響を与えますか?

gcc生成された実行可能ファイルの最終ファイル権限を決定する方法が疑問に思います。洞察を得るためにミニマリストプログラムを検討しました。test.c

#include <fcntl.h>
#include <unistd.h>

int main(){
  int fd = open("output.dat", O_CREAT, 0777);
  close(fd);
}

次の 2 つのシナリオは次のとおりです。

  1. ファイルにはtest.cACLがなく、umaskが0027。を実行すると、実行によって生成されたファイルと同様に、gcc -o test test.cファイルtestにも(予想どおり)権限が付与されます。rwxr-x---output.dat./test

  2. ファイルはtest.cディレクトリにあり、setfacl -m d:g::rX -m d:o:--- .umaskは0022。この場合、test結果の実行可能ファイルにはファイルが残っている間にgcc権限があります。rwxr-x--xoutput.datrwxr-x---

ファイルの場合、output.datその動作はそのセクションと一致するようです。オブジェクト生成と基本ACLaclのマニュアルページから。また、出力ファイルが最初に生成され、実行可能フラグが生成されることがstraceわかりました。ところで、最初のシーンと2番目のシーンで呼び出されるようです。gccchmodchmod("test", 0750)chmod("test", 0751)

0751私はおそらく非常に明確なものを見逃しているでしょう。しかし、後者の場合、権限が付与されるのはなぜですか?尊重されるべきではないか-m d:o:---

関連情報