Linux & Shell

umask 계산

마스크와 프로그램이 요청한 생성 권한을 입력하고 파일·디렉터리 결과와 비트 계산을 비교하세요.

umask 계산

마스크와 생성 요청

계산된 권한

마스크 — 제거할 비트
0022 · ----w--w-
허용 권한 (umask -S)
u=rwx,g=rx,o=rx

파일

0644 · rw-r--r--

실제로 제거된 권한: 0022 · ----w--w-

비트 계산 보기
요청 비트
0666 · 110 110 110
마스크 — 제거할 비트
0022 · 000 010 010
허용 비트 (~mask & 0777)
0755 · 111 101 101
결과 비트
0644 · 110 100 100

요청되었고 마스크되지 않은 비트만 남습니다.

0666 & (~0022 & 0777) = 0644

디렉터리

0755 · rwxr-xr-x

실제로 제거된 권한: 0022 · ----w--w-

비트 계산 보기
요청 비트
0777 · 111 111 111
마스크 — 제거할 비트
0022 · 000 010 010
허용 비트 (~mask & 0777)
0755 · 111 101 101
결과 비트
0755 · 111 101 101

요청되었고 마스크되지 않은 비트만 남습니다.

0777 & (~0022 & 0777) = 0755

브라우저에서 계산하며 입력을 업로드하거나 저장하지 않습니다.

예제와 입력 규칙

기호는 허용 비트입니다. u=rwx,g=rx,o=rx는 022와 같습니다. 세 사용자 분류를 모두 선언하세요.

입력된 요청만 계산합니다. 기본 ACL이나 생성 후 변경은 계산하지 않습니다.

권한을 계산했습니다.

umask 계산은 같은 프로세스가 만든 파일과 디렉터리의 권한이 왜 다른지 확인할 때 유용합니다. 기본 입력은 각각 0666과 0777이며, 실제 프로그램이 요청하는 값으로 바꿀 수 있습니다.

마스크는 요청에 있는 비트만 제거합니다. 일반 파일에 실행 권한이 없는 이유를 이해하려면 마스크뿐 아니라 파일을 만든 프로그램의 요청부터 확인해야 합니다.

umask 계산으로 차이 확인하기

하나의 마스크, 두 가지 출발점

umask 계산에서 111 예제를 선택하면 파일 요청 666은 그대로 남지만 디렉터리 요청 777은 666이 됩니다. 처음부터 없는 실행 비트는 제거할 수 없으므로 단순 뺄셈으로 계산하면 틀립니다.

문서와 폴더가 같은 필터를 지나 서로 다른 권한 칸을 남기는 모습.

허용과 요청을 구분

umask 계산은 마스크가 허용하는 비트와 프로그램이 요청한 비트를 따로 보여 줍니다. 파일 요청을 777로 바꾸면 실행 비트를 유지할 수 있지만 666에서는 새로 추가하지 않습니다.

두 권한 층을 겹쳐 양쪽에 모두 있는 칸만 결과에 남기는 모습.

요청 값과 기호를 먼저 확인

01

홀수 마스크로 확인

예제 목록에서 111을 선택한 뒤 불러오기를 누르세요. 바뀔 필드 수를 확인하고 적용하면 파일 결과는 0666 그대로입니다. 실행 취소로 입력과 결과를 함께 복원할 수 있습니다.

02

기호 입력의 의미 확인

마스크에는 u=rwx,g=rx,o=rx처럼 완전한 umask -S 형식을 씁니다. 요청 권한에는 rw-rw-rw-처럼 아홉 글자를 입력합니다. 전자는 허용 비트, 후자는 요청 비트입니다.

03

여러 값을 한 번에 비교

자동 계산을 끄고 여러 필드를 수정하세요. 변경 즉시 내보내기가 비활성화됩니다. 계산 버튼이나 Ctrl/Cmd+Enter로 갱신한 뒤 비트 계산을 펼쳐 피연산자를 확인하세요.

남는 권한을 비트로 살펴보기

파일 기본 권한과 요청

파일은 기본 0666, 디렉터리 권한은 0777 요청으로 계산합니다. 두 값은 각각 수정할 수 있습니다. 실행 파일을 만드는 프로그램은 0777, 비공개 파일은 0600을 요청할 수도 있습니다.

8진수와 기호 표시

숫자 마스크는 제거할 비트를 나타내며 u=,g=,o= 형식은 허용할 비트를 나타냅니다. 결과는 네 자리 8진수와 소유자·그룹·기타 사용자 순서의 rwx 문자열로 함께 표시됩니다.

제거된 비트까지 추적

요청 비트, 마스크, 하위 아홉 비트의 반전과 최종 AND 결과를 확인합니다. 실제 제거된 권한을 따로 표시하므로 요청에 없던 비트가 제거됐다고 오해하지 않습니다.

계산 범위와 실제 환경

일반 권한 아홉 비트만
숫자는 세 자리 또는 앞이 0인 네 자리를 허용합니다. 요청에는 아홉 글자 rwx도 가능합니다. 특수 비트, 파일 종류 접두사, ACL 접미사는 거부합니다. 앞뒤 공백은 제거하며 각 필드는 최대 128자입니다.
완전한 기호 선언만
u, g, o를 한 번씩 선언해야 합니다. 절의 순서는 바꿀 수 있고 각 권한은 rwx 순서 또는 빈 값입니다. g+w 같은 상대식, a= 축약형, g=u 권한 복사는 지원하지 않습니다.
ACL과 파일 시스템 제외
Linux에서 부모 디렉터리에 기본 ACL이 있으면 일반 마스크 계산과 다른 경로로 권한이 정해집니다. 특수 비트 상속, 나중의 chmod, 마운트 옵션이나 앱의 추가 변경을 모의 실행하지 않습니다.
역산이나 시스템 변경 없음
0666 요청에서 026과 027은 모두 0640을 만들므로 결과 하나로 유일한 마스크를 역산하지 않습니다. 기존 파일을 바꾸거나 명령을 실행하지 않으며 셸 설정과 입력을 저장하지 않습니다.

umask 계산 자주 묻는 질문

일부 umask 값을 바꿔도 파일 권한이 달라지지 않는 이유는 무엇인가요?

요청에 있는 비트만 마스크로 제거할 수 있습니다. 0666에는 실행 비트가 없으므로 026과 027은 모두 0640이 됩니다. 일반 뺄셈이 아니라 반전한 마스크와 요청 값의 비트 AND를 계산해야 합니다.

umask를 바꿔도 새 파일에 실행 권한이 생기지 않는 이유는 무엇인가요?

일반적인 파일 생성 명령은 실행 비트가 없는 0666을 요청합니다. umask는 비트를 추가할 수 없습니다. 실행 파일을 생성하는 프로그램이 0777을 요청하면 해당 실행 비트가 마스크에 따라 남을 수 있습니다.

umask가 0022처럼 네 자리로 나오는 이유는 무엇인가요?

이 도구에서 0022와 022는 같은 값입니다. 앞의 0은 별도 사용자 그룹을 뜻하지 않습니다. 네 자리 입력의 첫 자리는 0만 허용하며 1022 같은 특수 비트 입력은 거부합니다.

umask -S에 표시되는 권한은 어떻게 읽나요?

마스크가 통과시키는 권한입니다. u=rwx,g=rx,o=rx는 허용 값 0755, 마스크 0022에 해당합니다. 요청 값이 0666인 파일에 실행 권한을 준다는 뜻은 아닙니다.

기본 ACL이 설정되어 있으면 umask는 어떻게 적용되나요?

Linux에서는 부모의 기본 ACL을 상속한 뒤 요청 값으로 권한을 더 제한하며, 이때 일반 umask 계산 경로는 사용하지 않습니다. 이 도구는 ACL을 입력받지 않으므로 상속 결과를 계산하지 않습니다.

예상과 다른 결과인가요?

다른 요청 권한 비교하기

umask 계산으로 프로그램이 요청한 권한과 마스크가 남기는 권한을 비교하세요. 실제 파일을 설명하려면 요청 값과 부모 디렉터리의 ACL도 함께 확인해야 합니다.