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 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / df - 파일 시스템의 남은 용량 확인

Linux / 명령어 / df - 파일 시스템의 남은 용량 확인

Linux df 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux tail 명령어로 파일의 마지막 행과 바이트를 확인하고 새로 추가되는 로그를 추적하는 방법을 설명합니다. -n, -f, -F 차이와 로그 로테이션, 필터링 및 여러 파일 모니터링 예제를 정리합니다.

Linux / 명령어 / zip - 여러 파일을 ZIP 아카이브로 묶기

Linux / 명령어 / zip - 여러 파일을 ZIP 아카이브로 묶기

Linux zip 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

리눅스 Bash의 ;, &&, ||, &, |, |&, ! 차이를 종료 상태와 실제 예제로 설명합니다. 조건부 실행, 백그라운드 작업, 파이프라인과 pipefail 사용법까지 정리합니다.

Linux / 명령어 / nice - 새 명령의 CPU 우선순위 조정

Linux / 명령어 / nice - 새 명령의 CPU 우선순위 조정

Linux nice 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / paste - 파일의 행을 가로로 결합

Linux / 명령어 / paste - 파일의 행을 가로로 결합

Linux paste 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux 강좌 / 프로세스 확인·일시정지·종료하기

Linux 강좌 / 프로세스 확인·일시정지·종료하기

ps, top, pgrep으로 프로세스의 상태와 자원 사용량을 확인합니다. 실습 프로세스에 STOP, CONT, TERM을 보내고 셸 작업과 서비스의 차이를 익힙니다.

Linux 강좌 / 파일 비교하기 - diff와 cmp의 차이와 실습

Linux 강좌 / 파일 비교하기 - diff와 cmp의 차이와 실습

diff와 cmp로 두 파일의 차이를 확인하고 unified diff를 읽는 법을 익힙니다. 내용이 다른 경우와 명령 실행 오류의 종료 상태도 구별합니다.

Linux / 명령어 / nmap - 허가된 호스트의 포트와 서비스 조사

Linux / 명령어 / nmap - 허가된 호스트의 포트와 서비스 조사

Linux nmap 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / env - 환경 변수 설정과 명령 실행

Linux / 명령어 / env - 환경 변수 설정과 명령 실행

Linux env 명령어로 환경 변수를 추가·제거하거나 깨끗한 환경에서 프로그램을 실행하는 방법을 설명합니다. env -i·-u·-C, shebang 활용과 printenv와의 차이를 다룹니다.