티스토리 뷰
리눅스에서는 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동적으로 설정된다. 일반 파일의 경우 소유자는 읽기와 쓰기 권한이 설정되고 그룹과 기타 사용자는 읽기 권한만 설정되며, 디렉터리의 경우 소유자는 읽기, 쓰기, 실행 권한이 설정되고 그룹과 기타 사용자는 읽기, 실행 권한만 설정된다.
기본 접근 권한은 리눅스 시스템에 설정된 기본 값에 따른 것으로, 이 기본 값을 바꾸면 기본 접근 권한도 바꿀 수 있다.
1. 기본 접근 권한 확인하고 변경하기
기본 접근 권한을 확인하고 설정하는 데는 umask 명령을 사용한다.
umask
기능 기본 접근 권한을 출력하거나 변경한다.
형식 umask [옵션][마스크 값]
옵션 -S : 마스크 값을 문자로 출력한다.
사용 예 umask 022
아무 인자 없이 umask 명령만 사용할 경우, 기본 마스크 값을 보여준다.
마스크 값의 의미
마스크 값은 파일이나 디렉터리 생성 시 부여하지 않을 권한을 지정해 놓는 것이다. 얼굴에 쓰는 마스크를 상상해보자. 마스크란 것이 원래 일부분을 가리는 기능을 하지 않는가. 예를 들어 마스크 값이 022일 경우, 이를 접근 권한의 숫자 모드로 해석하여 표기하면 ----w--w- 이고, 이는 그룹과 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 뜻이다. umask 명령에 -S 옵션을 적용하여 마스크 값을 문자로 출력하면 명확하게 알 수 있다.
마스크값 변경하기
umask 077 이와 같은 형식으로 마스크 값을 변경할 수 있다. umask로 마스크 값을 바꾸면 파일이나 디렉터리를 생성할 때 적용되는 기본 접근 권한도 바뀐다.
2. 마스크 값 적용 과정
마스크 값은 파일이 생성될 때마다 적용된다. 마스크 값을 비트로 표시했을 때 그 값이 '1'인 경우 대응하는 권한은 제외한다. 마스크 값이 적용되는 진리표는 다음과 같다.
요청 권한 |
1 |
1 |
0 |
0 |
마스크 |
1 |
0 |
1 |
0 |
부여된 권한 |
0 |
1 |
0 |
0 |
위 진리표가 의미하는 바는, 마스크 값이 1일 경우 그 권한이 부여 되지 않는다는 것이다. 리눅스 시스템은 파일이나 디렉터리를 생성할 때 부여하려는 접근 권한과 마스크 값을 진리표를 기준으로 마스킹하여 기본 접근 권한을 결정한다. 먼저 일반 파일의 최대 접근 권한은 666(rw-rw-rw)으로, 현재 마스크 값이 022일때 666과 022를 마스킹하면 결과는 644이다. 따라서 마스크 값이 022일때 일반 파일을 생성하면 기본 접근 권한은 644가 된다.
디렉터리의 경우에는 최대 접근 권한이 777이므로 여기에 022를 마스킹 하면 기본 접근 권한은 755가 된다. 실행 파일도 기본적으로 실행 권한을 가져야 하므로 디렉터리와 같은 형태로 권한이 부여된다.
간단한 마스크 값 계산 방법
리눅스의 기본 설정을 적용하는 일반적인 사용자 환경에서 마스크 값을 사용자의 입장에서 좀 더 쉽게 이해하는 방법은 최대 접근 권한에서 마스크 값을 빼는 것이다. 예를 들어 마스크 값이 022일 경우, 8진수 접근 권한으로 해석하여 나타내면 ----w--w-이며, 최대 접근 권한인 rw-rw-rw-에서 이것을 빼면 파일의 기본 접근 권한은 rw-r--r--가 된다. 이는 그냥 숫자로 계산할 수도 있는데, 666-022=644이다.
umask로 마스크 값을 바꿀 때 파일과 디렉터리에 모두 적용해봐야 한다. 마스크 값이 파일에는 적합하지만 디렉터리에는 적합하지 않을 수도 있기 때문이다. 예를 들어 마스크 값이 026일 경우 파일은 640으로 적합하지만 디렉터리는 751이 되어 기타 사용자의 접근 권한이 이상해진다.
- Total
- Today
- Yesterday
- 파일
- 스레드
- 정렬
- 프로세스
- 리눅스
- 파이썬예제
- Sort
- 자료구조
- 파이썬
- 티라노 시그널
- C
- 클라이언트
- 라즈베리파이
- 티그널
- 유즈케이스
- 액터
- 클래스
- C++
- UML
- 안드로이드
- 터미널
- 소켓
- 악보
- 디렉터리
- 소켓 프로그래밍
- socket
- MFC
- 데이터베이스
- C/C++
- 쓰레드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |