생성 프로그램이 파일 mode 0666을 요청하고 프로세스 umask가 0027이면, umask가 가리는 비트를 제거해 0640이 됩니다. 각 자릿수를 숫자끼리 빼는 계산이 아니라 요청 권한에서 mask 비트를 끄는 계산입니다.

이 결과는 예시의 생성 mode와 기본 ACL이 없는 상황을 전제로 합니다. 실제 프로그램이 요청하는 mode나 부모 디렉터리의 default ACL이 다르면 결과도 달라질 수 있습니다. 아래 숫자는 정보보안 학습을 위해 직접 만든 예시이며 공식 기출이나 판매 카드 원문이 아닙니다.

umask는 최종 권한에서 숫자를 빼는 값이 아닙니다

권한 숫자의 각 비트는 읽기 4, 쓰기 2, 실행 1을 뜻합니다. 파일을 만드는 호출은 허용할 수 있는 상한을 mode로 전달하고, umask는 그중 주지 않을 비트를 가립니다. 따라서 ‘0666에서 0027을 뺀다’는 산술은 우연히 맞는 결과를 낼 수 있어도 규칙을 설명하지 못합니다. 권한을 rwx 세 칸으로 바꾸어 어떤 비트가 꺼졌는지 확인하는 편이 안전합니다.

로그 파일 예시를 세 사용자 칸으로 계산합니다

가상 Linux 프로세스의 파일 생성 계산. 기본 ACL은 없는 것으로 둡니다.
대상요청 modeumask최종 mode
소유자rw----rw-
그룹rw--w-r--
기타rw-rwx---
전체066600270640

소유자 칸에서 umask는 아무 권한도 가리지 않으므로 rw-가 남습니다. 그룹 칸은 쓰기 비트가 가려져 r--가 됩니다. 기타 칸의 마스크 7은 rwx 모두를 가리므로 요청된 읽기와 쓰기가 제거되어 ---가 됩니다. 요청에 없던 실행 비트도 새로 생기지 않습니다. 세 칸을 붙이면 0640이며, 각 칸에서 막힌 권한을 표시하면 다른 숫자에도 같은 방법을 적용할 수 있습니다.

디렉터리 요청 mode가 파일과 다른 이유를 봅니다

디렉터리는 안의 이름을 읽고, 항목을 만들고, 경로를 따라갈 수 있어야 하므로 실행 비트가 검색 권한으로 쓰입니다. 생성 호출이 디렉터리에 0777을 요청하고 같은 umask 0027을 적용하면, 소유자는 rwx, 그룹은 r-x, 기타는 ---가 되어 0750이 됩니다. 이 계산은 ‘모든 프로그램이 항상 0777을 요청한다’는 주장이 아닙니다. 요청 mode를 알아야 최종 결과를 판정할 수 있습니다.

  1. 먼저 대상이 일반 파일인지 디렉터리인지 확인합니다.
  2. 문제에 적힌 생성 요청 mode를 rwx 세 칸으로 바꿉니다.
  3. umask의 각 비트를 어느 주체의 권한을 가리는지 겹쳐 봅니다.
  4. 남은 권한을 다시 4·2·1로 합산합니다.
  5. 기본 ACL이나 사후 chmod 조건이 있으면 별도 분기로 표시합니다.

default ACL이 있으면 umask만으로 계산을 끝내지 않습니다

Linux 생성 동작에서 부모 디렉터리에 default ACL이 있으면 일반적인 umask 분기와 달라집니다. 상속 ACL이 새 객체의 access ACL 초기값이 되고, 생성 mode에 없는 권한은 그 결과에서 제한될 수 있습니다. 그래서 ‘umask 0027이면 무조건 0640’이라고 결론 내릴 수 없습니다. 부모의 ACL 여부, 생성 프로그램의 요청 mode, 새 파일의 getfacl 결과를 함께 확인해야 합니다.

권한 확인 명령은 환경을 바꾸지 않고 상태를 읽는 예시로만 보세요. 운영 서버에서 무심코 설정을 변경하지 말고, 실제 점검은 담당자의 승인과 절차에 따라 수행해야 합니다.

교육용 읽기 명령 예시. 이 문서에서는 실제 시스템에 실행하지 않습니다.
umask
stat -c '%a %A %n' sample.log
getfacl sample.log

자주 하는 실수는 생성 조건을 생략하는 것입니다

흔한 오답은 umask 숫자만 보고 파일 mode를 확정하는 것입니다. 파일 생성 함수가 0600을 요청했다면 그룹·기타 비트는 원래 없고, umask가 그것을 다시 만들지는 않습니다. 반대로 생성 프로그램의 요청 값을 모르면 마스크만으로 최종 권한을 복원할 수도 없습니다. 환경 변수나 셸 시작 파일에서 보이는 umask가 특정 서비스 프로세스의 실제 값을 대표한다고 단정하지 말고, 문제에서 주어진 프로세스 조건을 기준으로 계산하세요.

한 줄씩 표를 만들어 계산을 검산합니다

복습할 때는 정답 숫자만 외우지 말고 ‘요청 mode → 가린 비트 → 남은 rwx → 8진수’ 순서를 말해 보세요. 파일 0666·umask 0027은 0640, 디렉터리 0777·umask 0027은 0750입니다. 두 결과의 차이는 디렉터리에 실행/검색 비트가 요청됐다는 점에서 나옵니다. default ACL이 언급된 문제는 계산 표 옆에 ‘ACL 분기 확인’ 메모를 적어 단순 계산의 범위를 지키세요.

정답을 가리고 확인해 보세요

이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.

기본 ACL이 없는 디렉터리에서 프로그램이 새 일반 파일에 0600을 요청하고 umask가 0027입니다. 최종 mode는 무엇이며, umask만으로 이 답을 확정할 수 있었나요?

정답과 해설 확인최종 mode는 0600입니다. 예시처럼 생성 요청 mode와 기본 ACL이 없다는 조건까지 알아야 확정할 수 있습니다.

요청된 0600에서 umask 0027이 가리는 그룹·기타 비트는 이미 꺼져 있습니다. umask는 권한을 추가하지 않으므로 결과는 0600입니다. 부모에 default ACL이 있거나 생성 mode가 다르면 별도 판정이 필요합니다.

이 주제의 회상 연습 이어가기