리눅스 파일권한(umask & chmod) - 이해하기



리눅스 파일권한: 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 = 644rw-r--r--

  • 디렉터리: 777 - 022 = 755rwxr-xr-x

umask 022
touch a.txt        # 644가 되는 경우가 많음
mkdir testdir      # 755

umask 예제 2) umask가 027이라면? (보안적으로 자주 권장)

  • 파일: 666 - 027 = 640rw-r-----

  • 디렉터리: 777 - 027 = 750rwxr-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


댓글 쓰기

새 댓글을 작성할 수 없습니다.*

다음 이전