gcc 빌드 된 파일 퍼미션이 000으로 출력 됩니다.
아래와 같이 test.c 파일을 생성 후 gcc test.c -o test로 빌드를 진행합니다.
그러면 실행 파일인 test 파일의 퍼미션이 000로 나옵니다...
수동으로 권한 주면 실행은 잘 됩니다.
gcc 권한도 충분해 보이는데 뭐가 문제일까요...
[test:/home/user 234 ] cat test.c
#ifdef __cplusplus
# error "The CMAKE_C_COMPILER is set to a C++ compiler"
#endif
#include
#if defined(__CLASSIC_C__)
int main(argc, argv)
int argc;
char* argv[];
#else
int main(int argc, char* argv[])
#endif
{
printf("%d%c", (argv != 0), (char)0x0a);
return argc-1;
}
[test:/home/user 235 ] gcc test.c -o test
[test:/home/user 236 ] ls -al
---------- 1 root system 49695 Oct 7 22:36 test
-rwxr--r-- 1 root system 289 Oct 7 22:04 test.c*
[test:/home/user 237 ] ./test
./test: Permission denied.
[test:/home/user 238 ] chmod 755 test
[test:/home/user 239 ] ./test
1
[test:/home/user 241 ] gcc --version
gcc (GCC) 5.5.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[test:/home/user 242 ] which gcc
/opt/freeware/bin/gcc
[test:/home/user 243 ] ls -al /opt/freeware/bin/gcc
-rwxr-xr-x 3 root system 2476894 Oct 11 2017 /opt/freeware/bin/gcc*
[test:/home/user 244 ] ls -al /usr/bin/gcc
lrwxrwxrwx 1 root system 26 Oct 7 19:17 /usr/bin/gcc@ -> ../../opt/freeware/bin/gcc*
참고로 root 권한 입니다.
[test:/home/user 246 ] whoami
root
저라면 umask 먼저 체크해 볼 겁니다.
저라면 umask 먼저 체크해 볼 겁니다.
정상입니다.
정상 빌드 되는 서버랑 umask 값 비교해보니 정상 입니다.
고쳤습니다.
자문 자답 이지만 고쳤습니다
truss 분석해보니 빌드 시
cc1 라이브러리 환경변수가 이상한 경로로 먹고 있었네요.
댓글 달기