Linux / 명령어 / umask - 새 파일·디렉터리 기본 권한 제한
umask는 현재 셸과 그 자식 프로세스가 새 파일·디렉터리를 만들 때 제거할 권한 비트를 설정합니다. 기존 파일의 권한은 바꾸지 않습니다.
umask 명령어란?
일반적인 생성 요청 권한은 파일이 666, 디렉터리가 777이며, umask 022를 적용하면 보통 파일은 644, 디렉터리는 755로 만들어집니다. 이는 단순한 숫자 뺄셈이 아니라 허용 비트에서 마스크 비트를 제거하는 방식입니다. 프로그램이 더 제한적인 모드를 요청하면 실제 결과도 더 좁아집니다.
기본 문법
umask [-S] [마스크]
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. help umask으로 현재 시스템의 설명을 확인하세요.
사용 예제
현재 마스크 확인
셸에 적용된 8진수 마스크를 표시합니다.
umask
기호식으로 확인
현재 허용되는 권한을 문자로 읽기 쉽게 표시합니다.
umask -S
현재 셸의 새 파일 권한 제한
새로 만드는 파일과 디렉터리에 적용될 제한을 조정합니다. 기존 파일에는 적용되지 않습니다.
umask 027 umask
기본 권한에서 마스크 빼기
새 작업 디렉터리에서 셸에 umask 027을 설정하면 새 일반 파일의 최대 기본값 666에서 그룹 쓰기와 기타 사용자 권한 등이 제한됩니다. 새 디렉터리의 최대 기본값은 777입니다. 이미 있는 파일에 touch를 실행하면 권한이 새로 계산되지 않으므로 파일과 디렉터리가 없는 곳에서 예제를 실행하세요.
umask 027 umask touch demo.txt mkdir demo-dir stat -c '%a %n' demo.txt demo-dir
예시 출력(파일시스템의 ACL 등 추가 정책이 없을 때):
0027 640 demo.txt 750 demo-dir
umask는 현재 셸과 그 자식 프로세스에 적용되며 이미 존재하는 파일 권한은 바꾸지 않습니다. 실제 권한은 프로그램이 요청한 모드와 ACL·파일시스템 정책에도 영향을 받으므로 중요한 경로는 stat으로 확인하세요.
마스크는 단순한 십진 뺄셈이 아니라 요청한 권한 비트를 가리는 방식으로 적용됩니다. 따라서 프로그램이 처음부터 실행 비트를 요청하지 않은 일반 파일에는 umask를 바꿔도 실행 비트가 자동으로 생기지 않습니다. 로그인 셸·서비스 관리자·컨테이너가 서로 다른 마스크를 설정할 수도 있습니다.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
022 |
그룹 쓰기와 그 밖의 사용자 쓰기를 제한하는 흔한 예입니다. |
027 |
그룹 쓰기와 그 밖의 사용자 모든 권한을 제한합니다. |
-S |
현재 설정을 기호 형식으로 표시합니다. |
-p |
Bash에서 다시 실행할 수 있는 형태로 표시합니다. |
사용할 때 주의할 점
umask는 Bash 셸 내장 명령이므로 별도 자식 셸에서 실행해도 부모 셸의 설정이 바뀌지 않습니다. 새 파일이 반드시 666에서 시작하는 것은 아니며 애플리케이션이 요청한 모드와 ACL·파일 시스템 정책도 결과에 영향을 줍니다. 기존 파일의 권한을 바꾸려면 chmod를 사용하세요.
자주 묻는 질문
umask 022를 실행하면 기존 파일도 644가 되나요?
아니요. 그 이후 이 셸과 자식 프로세스가 만드는 항목의 권한 제한에만 적용됩니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 umask 관련 공식 문서에서 확인할 수 있습니다.









