gcc
생성된 실행 파일의 최종 파일 권한을 결정하는 방법이 궁금합니다 . 통찰력을 얻기 위해 미니멀리스트 프로그램을 고려했습니다.test.c
#include <fcntl.h>
#include <unistd.h>
int main(){
int fd = open("output.dat", O_CREAT, 0777);
close(fd);
}
다음 두 가지 시나리오는 다음과 같습니다.
파일은
test.c
ACL이 없고 umask가0027
. 을 실행하면 실행을 통해 생성된 파일과 마찬가지로gcc -o test test.c
파일test
에도 (예상대로) 권한이 부여 됩니다.rwxr-x---
output.dat
./test
파일은
test.c
디렉토리에 있고setfacl -m d:g::rX -m d:o:--- .
umask는0022
. 이 경우test
결과 실행 파일에는 파일이 남아 있는 동안gcc
권한이 있습니다 .rwxr-x--x
output.dat
rwxr-x---
파일의 경우 output.dat
해당 동작이 해당 섹션과 일치하는 것 같습니다.객체 생성 및 기본 ACLacl의 매뉴얼 페이지에서. 또한 출력 파일이 먼저 생성된 후 실행 가능한 플래그가 생성되는 strace
것으로 나타났습니다 . 그런데 첫 번째 장면과 두 번째 장면에서 호출되는 것 같습니다.gcc
chmod
chmod("test", 0750)
chmod("test", 0751)
0751
나는 아마도 매우 분명한 것을 놓치고 있을 것입니다. 그러나 후자의 경우 권한이 부여되는 이유는 무엇입니까? 존중받아야 하는 것 아닌가 -m d:o:---
?