파일을 만들때 권한 설정

simpid의 이미지

파일을 만들면서 파일의 사용자 권한을 설정하려고 합니다.

handle = open(p_path, O_CREAT | O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);

파일의 소유자와 그룹에는 RW를... 그외 사용자에게는 R만 주려고 하는데..
이상하게 소유자와 그룹에게만 올바르게 권한이 부여됩니다.

S_IROTH가 먹히질 않는데 이유가 뭘까요?

partout의 이미지

쉘 상에서 umask값을 확인해 보세요.

man umask

umask는 파일을 오픈할 때 새로 생성되는 파일에 대해서 퍼미션을
결정하기 위해 사용되는 값입니다.
가령 오픈 시에 요청한 파일의 퍼미션이 0666이고 현재 umask값이
0022라면 파일은 실제 0666 & ~0022 = 0644 (rw-r--r--)의 퍼미션만을
갖게 됩니다.

어찌나 졸린지..~~

shkwon81의 이미지

프로세스에서 명시적으로 umask 값을 변경하시려면

umask() 함수를 사용하시면 됩니다.

man 2 umask 를 참조하세요.

xfmulder의 이미지

먼저 umask 값을 000 으로 해주셔야 합니다
(8진수 000 == 0 과 같습니다)

umask(000);
handle = open(p_path, O_CREAT | O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);

내 자식들도 나처럼 !!