파일에 쓸 때 권한은 쓰기 전용입니다.

파일에 쓸 때 권한은 쓰기 전용입니다.

C에서 파일을 열고 다음 코드로 작성합니다.

int fd = open("soandso.txt", O_RDWR | O_CREAT);
write(fd, buf_of_data, 3);

이제 파일은 나에게만 쓰기 액세스 권한을 가집니다. 이는 내가 열기에서 지정한 권한이 아닙니다. 내가 뭘 잘못했나요?

답변1

이 값에 따라 파일 생성 권한이 수정됩니다 umask.

예를 들면 다음과 같습니다.

$ umask
0022
$ touch xyz
$ ls -l xyz
-rw-r--r-- 1 sweh sweh 0 Sep 22 08:37 xyz

umask 값은 표준을 따릅니다.읽고 쓰기모드이므로 값은 다음과 같습니다.0022 삭제 ----w--w-새로 생성된 파일에 대한 권한입니다.

우리는 이것을 변경할 수 있습니다:

$ umask 002
$ touch abc
$ ls -l abc
-rw-rw-r-- 1 sweh sweh 0 Sep 22 08:38 abc

이제 002 마스크만 제거되었습니다-------w-

차단되지 않은 파일 만들기

$ umask 0
$ touch def
$ ls -l def
-rw-rw-rw- 1 sweh sweh 0 Sep 22 08:40 def

프로그램에서 값을 무시하도록 하려면 호출하기 전에 함수를 명시적으로 호출 umask해야 합니다.umask(2)open(2)

open(2)플래그와 함께 사용할 경우 O_CREAT권한도 전달해야 합니다.모델. 예를 들어

open("myfile",O_CREAT|O_RDWR,0666);

이 경우 스키마 필드도 값에 따라 수정되므로 umask생성된 실제 스키마는 입니다 (mode & ~umask).

관련 정보