umask (User File-Creation Mode Mask)
umask는 파일이나 디렉터리가 생성될 때 부여되는 기본 권한을 제어하는 명령어입니다. 이름의 'Mask'라는 단어처럼, 전체 권한에서 특정 권한을 "가리고(빼고)" 남은 권한만 부여하는 일종의 거름망 역할을 합니다.
[Image of a filter representing umask, showing original bits being blocked to result in new permissions]
1. 기본 원리 (중요!)
리눅스에서 시스템이 기본적으로 부여하려고 하는 최대 권한은 다음과 같습니다.
* 파일: 666 (rw-rw-rw-) → 실행 권한은 기본으로 주지 않음
* 디렉터리: 777 (rwxrwxrwx)
여기서 umask 값을 뺀(Masking) 결과가 실제 생성되는 파일의 권한이 됩니다.
2. 주요 활용법
| 기능 | 명령어 | 설명 |
|---|---|---|
| 현재 설정 확인 | umask |
현재 설정된 umask 값을 숫자로 보여줍니다. (예: 0022) |
| 문자로 확인 | umask -S |
u=rwx,g=rx,o=rx 처럼 사람이 읽기 쉬운 문자로 보여줍니다. |
| 값 변경하기 | umask 022 |
새로운 umask 값을 설정합니다. |
3. 실무 활용 예시 (계산법)
① 일반적인 설정: umask 022
- 파일: 666 - 022 = 644 (rw-r--r--) -> 소유자만 수정 가능
- 디렉터리: 777 - 022 = 755 (rwxr-xr-x) -> 소유자만 수정 가능
② 보안 강화 설정: umask 077 (매우 엄격)
- 파일: 666 - 077 = 600 (rw-------) -> 나 외에 아무도 못 봄
- 디렉터리: 777 - 077 = 700 (rwx------) -> 나 외에 아무도 못 들어옴
4. [팁] 왜 뺄셈인가요? (비트 연산의 비밀)
사실 컴퓨터 내부에서는 단순한 뺄셈이 아니라 비트 연산(NOT 후 AND)이 일어납니다.
예를 들어 umask가 022라는 것은 "그룹(g)과 타인(o)의 쓰기(w) 비트를 끄겠다"는 신호입니다.
- 이 설정은 보통
~/.bashrc파일에 저장되어 로그인을 할 때마다 자동으로 적용됩니다.