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);
}

다음 두 가지 시나리오는 다음과 같습니다.

  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것으로 나타났습니다 . 그런데 첫 번째 장면과 두 번째 장면에서 호출되는 것 같습니다.gccchmodchmod("test", 0750)chmod("test", 0751)

0751나는 아마도 매우 분명한 것을 놓치고 있을 것입니다. 그러나 후자의 경우 권한이 부여되는 이유는 무엇입니까? 존중받아야 하는 것 아닌가 -m d:o:---?

관련 정보