umask 개요
운영체제는 새로운 파일이나 디렉토리를 생성할 때 기본 권한을 부여합니다. 이 기본 권한에서 `umask` 값이 '제외'되어 최종 권한이 결정됩니다. `umask`는 보안적인 측면에서 중요한데, 예를 들어 중요한 설정 파일이 너무 개방적인 권한으로 생성되는 것을 막을 수 있습니다. 각 사용자 세션마다 `umask` 값이 다르게 설정될 수 있으며, 보통 `.bashrc`나 `.profile` 같은 쉘 초기화 파일에서 설정됩니다.
umask의 작동 원리
`umask`는 **허용하려는 권한이 아닌, '제외할' 권한을 지정하는 마스크 값**입니다. 즉, 기본 최대 권한에서 `umask` 값을 뺀 결과가 최종 권한이 됩니다.
기본 최대 권한
- 파일: `666` (읽기 및 쓰기, 실행 권한 없음)
- 디렉토리: `777` (읽기, 쓰기 및 실행 권한 모두 포함)
umask 계산 방식
`umask`는 3자리 8진수 숫자로 표현됩니다 (예: `022`, `002`). 이 값은 소유자(User), 그룹(Group), 기타(Others) 순서로 적용됩니다. 각 자리의 숫자는 권한 비트(읽기=4, 쓰기=2, 실행=1)의 합을 나타냅니다. 최종 권한은 다음과 같이 계산됩니다:
유형 | 기본 최대 권한 | umask | 최종 권한 |
---|---|---|---|
파일 | 666 (rw-rw-rw-) | 022 (--w--w-) | 644 (rw-r--r--) |
디렉토리 | 777 (rwxrwxrwx) | 022 (--w--w-) | 755 (rwxr-xr-x) |
일반적인 umask 값
대부분의 시스템에서 기본 `umask` 값은 `0022` 또는 `0002` 입니다. 앞의 `0`은 특수 권한(sticky bit, SGID, SUID)에 해당하며, 일반적으로는 `0`으로 설정됩니다.
일반적인 umask 값의 의미
- `umask 022`: 파일은 `644`(rw-r--r--), 디렉토리는 `755`(rwxr-xr-x) 권한으로 생성됩니다. 이는 소유자에게는 모든 권한을, 그룹과 기타 사용자에게는 읽기 및 실행 권한을 부여하는 가장 일반적인 설정입니다.
- `umask 002`: 파일은 `664`(rw-rw-r--), 디렉토리는 `775`(rwxrwxr-x) 권한으로 생성됩니다. 이는 그룹 사용자에게도 쓰기 권한을 허용하여, 같은 그룹 내에서의 협업에 유리합니다.
- `umask 077`: 파일은 `600`(rw-------), 디렉토리는 `700`(rwx------) 권한으로 생성됩니다. 매우 엄격한 권한 설정으로, 소유자 외에는 아무도 접근할 수 없습니다. 보안이 매우 중요한 개인 파일이나 디렉토리에 적합합니다.
주요 umask 명령어 옵션
`umask` 명령어는 현재 값을 확인하거나 새로운 값을 설정하는 데 사용됩니다. 옵션 없이 사용하면 현재 `umask` 값을 표시합니다.
1. umask 값 확인 및 설정
생성된 명령어:
명령어를 조합해 보세요.
설명:
`umask` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
`umask` 명령어의 다양한 활용 예시들을 통해 새로 생성되는 파일 및 디렉토리의 기본 권한을 확인하고 설정하는 방법을 익혀보세요.
현재 umask 값 확인
umask
현재 쉘 세션의 `umask` 값을 8진수(예: `0022`)로 확인합니다.
umask 값을 심볼릭 모드로 확인
umask -S
`umask` 값을 8진수 대신 'u=rwx,g=rx,o=rx'와 같이 최종적으로 허용되는 권한 형태로 확인합니다.
umask 값을 002로 설정
umask 002
새로 생성되는 파일은 `664`(rw-rw-r--), 디렉토리는 `775`(rwxrwxr-x) 권한으로 설정되도록 `umask`를 변경합니다. (동일 그룹 사용자에게 쓰기 권한 허용)
엄격한 umask 값 077로 설정
umask 077
새로 생성되는 파일은 `600`(rw-------), 디렉토리는 `700`(rwx------) 권한으로 설정되도록 `umask`를 변경합니다. 소유자 외에는 접근 불가합니다.
umask 변경 후 파일/디렉토리 생성 권한 확인
umask 002
touch test_file_002.txt
mkdir test_dir_002
ls -l test_file_002.txt test_dir_002
umask를 `002`로 설정한 후, 새로운 파일과 디렉토리를 생성하여 변경된 권한이 적용되었는지 `ls -l`로 확인합니다.