리눅스 파일권한: umask & chmod 쉽게 정리 (+예제)
1) 먼저 권한 표기부터(기본)
권한은 r(4) w(2) x(1) 합으로 숫자를 만듭니다.
| 권한 | 숫자 |
|---|---|
| r-- | 4 |
| -w- | 2 |
| --x | 1 |
| rw- | 6 |
| r-x | 5 |
| rwx | 7 |
권한 3자리 = 소유자(u) / 그룹(g) / 기타(o)
예: 755 = u:rwx(7), g:r-x(5), o:r-x(5)
2) umask란? (기본 권한에서 “빼는 값”)
umask는 새 파일/디렉터리를 만들 때 적용되는 “기본 권한 제한값”이에요.
즉, 기본값에서 umask만큼 권한을 제거합니다.
✅ 기본 생성 권한(중요)
-
파일 기본값:
666(rw-rw-rw-) ← 실행(x)은 기본으로 안 줌 -
디렉터리 기본값:
777(rwxrwxrwx)
✅ 계산 공식(시험용)
-
파일 권한 =
666 - umask -
디렉터리 권한 =
777 - umask
실제는 “빼기”라기보다 비트 마스킹(권한 제거) 개념이지만, 시험/학습은 위처럼 계산하면 거의 맞아요.
umask 예제 1) umask가 022라면?
-
파일:
666 - 022 = 644→rw-r--r-- -
디렉터리:
777 - 022 = 755→rwxr-xr-x
umask 022
touch a.txt # 644가 되는 경우가 많음
mkdir testdir # 755
umask 예제 2) umask가 027이라면? (보안적으로 자주 권장)
-
파일:
666 - 027 = 640→rw-r----- -
디렉터리:
777 - 027 = 750→rwxr-x---
umask 027
touch secret.txt # 640
mkdir secretdir # 750
umask 확인/설정
umask # 현재 umask 보기 (예: 0022)
umask 027 # 현재 쉘 세션에서만 적용
3) chmod란? (이미 존재하는 파일 권한 “바꾸기”)
chmod는 파일/디렉터리의 권한을 직접 설정합니다.
A) 숫자(8진수) 방식 예제
chmod 644 a.txt # rw-r--r--
chmod 600 key.pem # rw------- (개인키/민감정보 권장)
chmod 755 script.sh # rwxr-xr-x (실행파일)
B) 문자 방식(u/g/o/a) 예제
-
u(소유자)g(그룹)o(기타)a(전체) -
+추가,-제거,=지정
chmod u+x script.sh # 소유자에게 실행권한 추가
chmod go-r secret.txt # 그룹/기타 읽기권한 제거
chmod a=r readme.txt # 모두에게 읽기만 부여 (444)
chmod u=rw,go= file.txt # 소유자만 rw, 그룹/기타 권한 없음 (600)
C) 디렉터리 재귀 적용(-R)
chmod -R 750 /data/project
주의: 하위 전체가 바뀌니 운영환경에서는 신중히!
4) umask vs chmod 차이 한 줄 요약
-
umask: “새로 만들 때 기본권한을 얼마나 막을까?”
-
chmod: “이미 있는 파일 권한을 어떻게 바꿀까?”
5) 정보보안기사 포인트(보안 팁)
-
개인키/비밀번호 파일은 보통
chmod 600권장 -
공용 디렉터리/공유 파일은 기타(o) 권한이 과하지 않은지 점검
-
서버 기본 umask가
022면 “기타 읽기 가능”이라 민감한 서버는027등으로 강화 고려
좋아요! 아래는 umask 역산(기출 스타일) 예제 5개입니다.
기본 공식만 기억하면 돼요:
-
파일 기본값 666, 디렉터리 기본값 777
-
umask = 기본값 - 실제권한(시험용 계산 방식)
1) 파일 생성 결과가 644였다. umask는?
-
666 - umask = 644 -
umask = 022
정답: 022
2) 파일 생성 결과가 640이었다. umask는?
-
666 - umask = 640 -
umask = 026
정답: 026
3) 파일 생성 결과가 600이었다. umask는?
-
666 - umask = 600 -
umask = 066
정답: 066
4) 디렉터리 생성 결과가 755였다. umask는?
-
777 - umask = 755 -
umask = 022
정답: 022
5) 디렉터리 생성 결과가 750이었다. umask는?
-
777 - umask = 750 -
umask = 027
정답: 027
시험에서 흔한 함정 1줄
-
파일은 기본이 666이라서 실행(x)이 기본으로 안 붙음
(그래서 “파일이 777로 만들어졌다” 같은 보기 나오면 의심!)
혼합 문제 10문제 (umask ↔ 결과 권한)
1) umask가 022일 때 파일 생성 권한은?
-
파일:
666 - 022 = 644
정답: 644
2) umask가 022일 때 디렉터리 생성 권한은?
-
디렉터리:
777 - 022 = 755
정답: 755
3) umask가 027일 때 파일 생성 권한은?
-
666 - 027 = 640
정답: 640
4) umask가 027일 때 디렉터리 생성 권한은?
-
777 - 027 = 750
정답: 750
5) umask가 077일 때 파일 생성 권한은?
-
666 - 077 = 600
정답: 600
6) umask가 077일 때 디렉터리 생성 권한은?
-
777 - 077 = 700
정답: 700
7) 파일 생성 결과가 664였다. umask는?
-
umask = 666 - 664 = 002
정답: 002
8) 디렉터리 생성 결과가 775였다. umask는?
-
umask = 777 - 775 = 002
정답: 002
9) 파일 생성 결과가 640, 디렉터리 생성 결과가 750이다. umask는?
-
파일 기준:
666 - 640 = 026 -
디렉터리 기준:
777 - 750 = 027
→ 둘이 다르므로 정상적인 단일 umask로 동시에 나오기 어려움(함정)
정답: 단일 umask로 불가(함정 문제)
10) 파일 생성 결과가 644, 디렉터리 생성 결과가 755이다. umask는?
-
파일:
666 - 644 = 022 -
디렉터리:
777 - 755 = 022
정답: 022
한 줄 꿀팁(시험용)
-
022 → 파일 644 / 디렉터리 755 -
027 → 파일 640 / 디렉터리 750 -
077 → 파일 600 / 디렉터리 700