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

같은 카테고리의 다른 글
웹 서버용 리눅스 추천: Ubuntu, Debian, Rocky Linux 선택 기준

웹 서버용 리눅스 추천: Ubuntu, Debian, Rocky Linux 선택 기준

웹 서버용 Linux 배포판을 지원 기간, 패키지 생태계, 보안 정책과 운영 환경 기준으로 비교합니다. Ubuntu Server, Debian, Rocky Linux·AlmaLinux와 Amazon Linux 중 상황에 맞는 선택법을 정리합니다.

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

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

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

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

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

Linux / 명령어 / cp - 파일과 디렉터리 복사

Linux / 명령어 / cp - 파일과 디렉터리 복사

Linux cp 명령어로 파일과 디렉터리를 복사하는 방법을 설명합니다. 덮어쓰기 제어, 속성 보존, 심볼릭 링크, 희소 파일과 안전한 복사 옵션을 함께 정리합니다.

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux ln 명령어로 하드 링크와 심볼릭 링크를 만드는 방법을 설명합니다. 두 링크의 차이, 상대 경로, 깨진 링크와 기존 링크 교체 시 주의점도 정리합니다.

Linux / 명령어 / type - 명령어 유형과 실행 대상 확인

Linux / 명령어 / type - 명령어 유형과 실행 대상 확인

Bash type 명령어로 별칭, 예약어, 함수, 내장 명령과 실행 파일을 구분하는 방법을 설명합니다. 모든 후보와 경로 확인, command -v·which와의 차이 및 스크립트 활용법을 다룹니다.

Linux / 명령어 / uname - 커널과 시스템 아키텍처 확인

Linux / 명령어 / uname - 커널과 시스템 아키텍처 확인

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

Linux / 명령어 / umask - 새 파일·디렉터리 기본 권한 제한

Linux / 명령어 / umask - 새 파일·디렉터리 기본 권한 제한

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

Linux 강좌 / 사용자·그룹과 파일 소유권 이해하기

Linux 강좌 / 사용자·그룹과 파일 소유권 이해하기

UID, GID, 기본·추가 그룹과 파일 소유권의 의미를 설명합니다. id, groups, getent, ls, stat으로 현재 계정과 파일의 소유 정보를 안전하게 확인합니다.

Linux 강좌 / 배포판 선택하기

Linux 강좌 / 배포판 선택하기

리눅스 입문과 서버 실습에 Ubuntu와 Rocky Linux 중 무엇을 선택하면 좋을까요? 학습 목표, 패키지 관리 방식과 지원 정책을 기준으로 두 배포판을 비교합니다.