개요
리눅스 환경에서 새로 생성되는 파일과 디렉터리의 기본 접근 권한을 결정하는 umask의 기본 동작 원리를 살펴봅니다. 8진수 계산 방식부터 협업 디렉터리 권한 통제, 셸 프로필을 통한 영구 설정까지 실무에서 즉시 활용할 수 있는 핵심 관리 기법을 정리합니다.
1. 현재 umask 확인과 기본 파일·디렉터리 생성 권한 테스트
umask 설정 및 권한 테스트를 위한 전용 실습 디렉터리를 생성하고 이동하기 위해 mkdir -p /tmp/umask-lab && cd /tmp/umask-lab 명령어를 실행합니다.

umask 명령어는 새로 생성되는 파일과 디렉터리의 기본 접근 권한을 제한하는 마스크 값을 확인하고 설정합니다.
실행 결과 현재 세션의 기본 마스크 값이 0022로 설정되어 있음을 알 수 있습니다.
⚙️ [주요 옵션]
-S : 마스크 값을 숫자가 아닌 기호 형태(u=rwx,g=rx,o=rx)의 허용 권한으로 알기 쉽게 출력합니다.-p : 현재 마스크 설정을 재사용 가능한 umask 명령어 형식의 8진수로 출력합니다.

umask -S 명령어를 실행하면 현재 적용된 마스크에 따라 사용자(u), 그룹(g), 기타 사용자(o)에게 실제로 부여되는 허용 권한을 직관적인 기호 모드로 확인할 수 있습니다.
출력된 u=rwx,g=rx,o=rx는 소유자에게 읽기·쓰기·실행 권한이, 그룹과 기타 사용자에게는 읽기·실행 권한이 기본 허용됨을 의미합니다.

현재 umask 값(0022)이 적용된 상태에서 기본 생성 권한을 확인하기 위해 touch default_file.txt && mkdir default_dir 명령어로 신규 파일과 디렉터리를 생성합니다.

생성된 파일과 디렉터리의 실제 권한을 확인하기 위해 ls -ld default_file.txt default_dir 명령어를 실행합니다.
디렉터리는 기본 최대 권한 777에서 마스크 022가 제외되어 755(drwxr-xr-x)로 생성되고, 일반 파일은 실행 권한이 제외된 최대 기본 권한 666에서 마스크 022가 제외되어 644(-rw-r--r--)로 생성된 것을 확인할 수 있습니다.

2. umask 값 임시 변경을 통한 신규 파일 권한 통제 실습
실습을 진행할 전용 작업 공간을 확인하고 이동하기 위해 mkdir -p /tmp/umask-lab && cd /tmp/umask-lab 명령어를 실행합니다.

umask 027 명령어를 실행하여 현재 세션의 마스크 값을 027로 임시 변경합니다.
이 설정은 그룹 사용자에게 쓰기 권한을 제한하고, 기타 사용자(다른 사용자)에게는 읽기, 쓰기, 실행 권한을 모두 차단하도록 지정합니다.

변경된 umask 값(027)이 신규 생성 항목에 정상적으로 적용되는지 확인하기 위해 touch secure_file.txt && mkdir secure_dir 명령어로 테스트용 파일과 디렉터리를 생성합니다.

생성된 파일과 디렉터리의 실제 권한을 확인하기 위해 ls -ld secure_file.txt secure_dir 명령어를 실행합니다.
출력 결과를 통해 디렉터리와 파일의 상세 권한 상태 및 소유권 정보를 점검할 수 있습니다.

권한 통제 테스트를 마친 후 세션의 마스크 설정을 표준 상태로 되돌리기 위해 umask 022 명령어를 실행하여 기본값으로 복구합니다.

3. 팀 협업 및 웹 서버 환경을 위한 공유 디렉터리 umask 설정
팀 협업 및 공동 작업을 위한 공유 디렉터리를 생성하고 작업 경로로 이동하기 위해 mkdir -p /tmp/umask-lab/shared && cd /tmp/umask-lab 명령어를 실행합니다.

그룹 구성원 간 원활한 공동 작업을 위해 그룹 쓰기 권한이 유지되도록 umask 002 명령어를 실행하여 현재 세션의 마스크 값을 변경합니다.
이 설정은 기본 권한에서 기타 사용자의 쓰기 권한만 제한하고 소유자와 그룹에는 읽기 및 쓰기 권한을 모두 허용하도록 지정합니다.

변경된 umask 값(002)이 적용된 상태에서 협업용 파일과 디렉터리를 생성하기 위해 touch shared/team_doc.txt && mkdir shared/team_project 명령어를 실행합니다.

생성된 파일과 디렉터리의 실제 권한을 확인하기 위해 ls -ld shared/team_doc.txt shared/team_project 명령어를 실행합니다.
출력 결과를 통해 공유 디렉터리 내에 생성된 각 항목의 상세 권한 상태와 소유권 정보를 점검할 수 있습니다.

협업 환경 테스트를 마친 후 세션의 마스크 설정을 표준 보안 상태로 되돌리기 위해 umask 022 명령어를 실행하여 기본값으로 복구합니다.

4. 시스템 전체 및 사용자별 umask 영구 적용 방법
시스템 전체의 기본 umask 설정값을 확인하기 위해 grep -n 'UMASK' /etc/login.defs 명령어를 실행합니다.
출력 결과를 통해 151번째 줄에서 시스템 기본값으로 UMASK 022가 정의되어 있음을 확인할 수 있습니다.

개인 사용자 설정임을 명시하는 주석을 추가하기 위해 echo '# Custom user umask' >> ~/.bashrc 명령어를 실행합니다.

새 셸 세션이 시작될 때마다 사용자 맞춤 권한이 자동 적용되도록 echo 'umask 027' >> ~/.bashrc 명령어를 실행하여 설정을 추가합니다.

~/.bashrc 파일 끝에 umask 관련 설정이 정상적으로 추가되었는지 확인하기 위해 tail -n 2 ~/.bashrc 명령어를 실행합니다.
출력 결과를 통해 주석과 umask 027 설정이 파일 마지막 두 줄에 올바르게 반영되었음을 점검할 수 있습니다.

수정된 ~/.bashrc 파일의 설정을 반영하고 최종 마스크 값을 확인하기 위해 bash -c 'source ~/.bashrc && umask' 명령어를 실행합니다.
출력 결과를 통해 해당 셸 환경에서 적용되는 현재 마스크 상태를 확인할 수 있습니다.

지금까지 리눅스 환경에서 파일 및 디렉터리 생성 권한을 자동으로 제어하는 umask의 기본 개념과 실무 설정 방법을 간단하게 정리해보았습니다.
각자의 운영 환경과 보안 정책에 알맞은 umask 값을 적용해 안전하고 체계적인 시스템 관리를 완성해보세요.