umask 값의 첫 번째 숫자는 무엇입니까? [복사]

umask 값의 첫 번째 숫자는 무엇입니까? [복사]

제가 올바르게 이해했다면 파일 권한에는 읽기/쓰기/실행 권한을 지정하는 연결된 3자리 숫자가 있습니다.

umask 값은 기본값에서 기본 "마스크"를 뺀 값입니다. 그러면 umask 값 0022의 기본값 777이 755가 될까요?

이 올바른지? 맞다면 umask 값의 첫 번째 0은 무엇입니까?

답변1

귀하의 예에서는 첫 번째 숫자 0이 사용되지 않습니다. umask는 오른쪽에서 왼쪽으로 읽으며 뒤에 오는 0은 무시됩니다. 그러나 아래와 같이 특수 권한(예 sticky bit: )을 설정하는 데 사용할 수 있습니다 .Set GUIDSet UID

0755  —- None of the special bits set
1755  —- Sticky bit set
2755  —- SGID bit set
4755  —- SUID bit set

맞습니다. umask 0022는 새로 생성된 디렉터리에서 기본 777(디렉터리) 권한을 755로 마스킹합니다.

8진수 번호 매기기는 처음 세 그룹(사용자, 그룹, 세계/기타)과 유사하게 작동합니다.

읽기/쓰기/실행 rwx값은 8진수 형식으로 표현되며 해당 값은 총 7개입니다.

4 - Read 
2 - Write 
1 - Execute

따라서 0755의 경우: 0은 무시됩니다. 7 (4+2+1)은 /owner의 읽기, 쓰기 및 실행과 같습니다 user. 5(4+1)는 쌍에 대한 읽기 및 실행 권한과 같고 group, 나머지 5(또한 4+1)는 other/world에 대한 읽기 및 실행 권한을 제공합니다.

답변2

앞에 오는 0은 C 언어(8진수 구문)에서 왔으며 다른 의미는 없다고 말하고 싶습니다. 에서 man 2 umask, 즉 기본 C 라이브러리 호출:

umask()는 호출 프로세스의 파일 모드 생성 마스크(umask)를 마스크 & 0777로 설정하고(즉, 마스크의 파일 권한 비트만 사용) 마스크의 이전 값을 반환합니다.


Umask는 단순한 빼기가 아니라 비트 단위로 처리됩니다. umask에 설정된 비트는 결과 파일 모드에서 지워집니다.

관련 정보