**umask**는 Unix/Linux 시스템에서 파일과 디렉터리의 기본 권한을 설정할 때 적용되는 기본 권한 마스크(Default Permission Mask) 를 의미합니다.
아래에 핵심 내용을 정리해 드릴게요.
📌 1️⃣ umask란 무엇인가?
- umask(User File Creation Mask) 는 사용자가 새 파일이나 디렉터리를 생성할 때, 그 기본 권한에서 제한할 권한을 지정하는 값입니다.
- 쉽게 말해, 기본 권한에서 umask 값만큼 빼서 실제 권한이 결정됩니다.
📌 2️⃣ 기본 생성 권한
- 새 파일의 기본 최대 권한은 666 (rw-rw-rw-) 입니다.
- 이유: 실행 권한은 기본적으로 주어지지 않음.
- 새 디렉터리의 기본 최대 권한은 777 (rwxrwxrwx) 입니다.
- 디렉터리는 읽기/쓰기뿐 아니라 실행(탐색) 권한이 필요하기 때문입니다.
📌 3️⃣ 실제 권한 결정 방법
공식:
예를 들어:
- umask 가 0022 라면:
- 파일: 666 - 022 = 644 (rw-r--r--)
- 디렉터리: 777 - 022 = 755 (rwxr-xr-x)
📌 4️⃣ umask 확인과 설정
- 현재 umask 값 확인:
-
bashumask
- umask 값 임시 변경:→ 새 파일: 666 - 027 = 639 ≈ 640 (rw-r-----)
→ 새 디렉터리: 777 - 027 = 750 (rwxr-x---) -
bashumask 027
- ~/.bashrc 또는 ~/.profile 에 설정하여 영구 적용할 수도 있습니다.
✅ 정리
| umask | 새 파일/디렉터리 생성 시 권한 제한 마스크 |
| 기본 최대 권한 | 파일: 666, 디렉터리: 777 |
| 적용 방법 | 최대 권한에서 umask 값 빼기 |
| 사용 예 | umask 022 → 파일 644, 디렉터리 755 |
필요하다면 실습 예제나 umask 계산 연습 문제도 만들어 드릴까요?
나의 말:
ChatGPT의 말:
좋습니다! 640 (rw-r-----) 권한이 어떻게 계산되는지 하나하나 단계별로 설명해드릴게요.
✅ 목표: umask 027일 때 파일의 실제 권한 계산 과정
📌 1. 기본 파일 권한
- 파일은 기본적으로 최대 권한 666 (rw-rw-rw-) 으로 생성됩니다.
- 실행 권한은 기본적으로 제외됨.
- 즉:
rw- rw- rw- 6 6 6
📌 2. umask 027 의 의미
- 8진수 027 은 다음과 같은 비트 마스크를 의미합니다:
-
diff0 2 7 --- --- --- 000 010 111
- 권한으로 보면:
- Owner: 0 → 제한 없음
- Group: 2 → 쓰기 금지 (-w-)
- Others: 7 → 모두 금지 (rwx 제거)
📌 3. 계산: 기본 권한 - umask
| Owner | 6 (rw-) | 0 | 6 (rw-) |
| Group | 6 (rw-) | 2 | 4 (r--) |
| Others | 6 (rw-) | 7 | 0 (---) |
🔢 즉:
- Owner: rw- → 6
- Group: r-- → 4
- Others: --- → 0
👉 최종 권한: 640 = rw-r-----
🔁 한눈에 정리
| 기본 권한 | 666 | 110 110 110 | rw-rw-rw- |
| umask | 027 | 000 010 111 | --- -w- rwx |
| 결과 권한 | 640 | 110 100 000 | rw-r----- |
필요하시면 디렉터리(기본 777) 권한 계산도 같이 보여드릴 수 있어요!
나의 말:
ChatGPT의 말:
맞습니다! 정확하게 이해하고 계십니다. 😊
✅ 퍼미션(권한) 숫자 계산 방식
UNIX/Linux의 파일/디렉터리 권한은 다음처럼 문자 기반과 숫자 기반이 서로 연결되어 있습니다:
| r | 읽기(Read) | 4 |
| w | 쓰기(Write) | 2 |
| x | 실행(Execute) | 1 |
| - | 없음 | 0 |
📌 예시: rw-r--r--
| Owner | rw- | 4 + 2 + 0 | 6 |
| Group | r-- | 4 + 0 + 0 | 4 |
| Others | r-- | 4 + 0 + 0 | 4 |
→ 644
📌 또 다른 예: rwxr-x--x
| Owner | rwx | 4 + 2 + 1 | 7 |
| Group | r-x | 4 + 0 + 1 | 5 |
| Others | --x | 0 + 0 + 1 | 1 |
→ 751
✅ 참고: 디렉터리는 x 권한이 매우 중요
- 디렉터리에서 x 는 탐색(진입) 가능 여부를 의미합니다.
- r 만 있고 x 가 없으면, 리스트는 볼 수 있어도 내부 파일에 접근할 수 없습니다.
✅ 퍼미션 계산 연습 문제 (총 5문항)
🔹 문항 1
다음 권한 문자열의 8진수 숫자 표현은 무엇인가요?
✅ 문항 1 정답: rwx r-x r--
→ 7 5 4
→ 754
🔹 문항 2
다음 권한 숫자 640은 권한 문자열로 어떻게 표현되나요?
✅ 문항 2 정답: rw- r-- ---
→ rw-r-----
🔹 문항 3
다음 권한 문자열을 숫자로 표현하세요:
✅ 문항 3 정답: rw- rw- ---
→ 6 6 0
→ 660
🔹 문항 4
다음 숫자 권한 751은 권한 문자열로 어떻게 표현되나요?
✅ 문항 4 정답: rwx r-x --x
→ rwxr-x--x
🔹 문항 5
아래 권한을 가진 디렉터리가 있을 때, 해당 디렉터리에 다른 사용자가 들어갈 수 있는가?
✅ 문항 5 정답:
- --x → "실행권한만 있음"
- 디렉터리에 x 권한만 있으면 경로로 진입은 가능하지만, 목록은 볼 수 없음
- 다른 사용자(others)가 --x 있으므로 들어갈 수는 있다
→ 정답: 가능하다
권한 숫자 644는 리눅스/유닉스 시스템에서 자주 사용되는 퍼미션 설정 중 하나입니다.
아래에 구조와 의미를 간단하게 정리해드릴게요.
✅ 644 권한의 의미
| Owner | 6 | 110 | rw- | 읽기 + 쓰기 |
| Group | 4 | 100 | r-- | 읽기만 가능 |
| Others | 4 | 100 | r-- | 읽기만 가능 |
🔹 전체 권한 문자열: rw-r--r--
📌 요약
- **파일 소유자(owner)**는 내용을 읽고 쓸 수 있습니다.
- **같은 그룹 사용자(group)**는 읽기만 가능합니다.
- **기타 사용자(others)**도 읽기만 가능합니다.
- 실행(x) 권한은 없음 → 이 권한은 보통 텍스트 파일 또는 설정 파일에 자주 쓰입니다.
📌 예: chmod 644 myfile.txt
- myfile.txt 파일에 대해:
- 소유자: 수정 가능
- 그룹/기타 사용자: 읽기만 가능
- 실행은 불가
필요하시면 chmod, chown 등을 활용한 실습 예제나 스크립트 자동 설정 예시도 드릴 수 있어요.
✅ 755 권한의 의미
| Owner | 7 | 111 | rwx | 읽기 + 쓰기 + 실행 가능 |
| Group | 5 | 101 | r-x | 읽기 + 실행 가능 |
| Others | 5 | 101 | r-x | 읽기 + 실행 가능 |
🔹 전체 권한 문자열: rwxr-xr-x
📌 요약
- **소유자(owner)**는 파일을 읽고, 수정하고, 실행할 수 있음
- **같은 그룹 사용자(group)**와 **기타 사용자(others)**는 읽기 및 실행만 가능, 수정은 불가
- 실행(x) 권한이 있으므로 이 권한은 스크립트나 실행파일, 디렉터리에 주로 사용됨
📌 예: chmod 755 script.sh 또는 chmod 755 /usr/local/bin/myscript
- 누구나 실행은 가능하지만, 편집은 소유자만 가능
- 디렉터리에 적용 시: 누구나 진입 및 탐색 가능하지만, 디렉터리 내 파일 추가/삭제는 소유자만 가능
✅ 사용 예시
| 쉘 스크립트 | 실행 가능하게 (.sh 파일 등) |
| 바이너리 실행 파일 | 다수가 실행할 수 있도록 |
| 웹 서버 루트 디렉터리 (/var/www/html) | 서버가 접근은 가능하지만, 수정은 못 하게 |
아래에 644 vs 755 권한을 명확히 비교한 표와 함께, 이해도를 높이기 위한 실습 문제도 제공해드릴게요.
✅ 644 vs 755 권한 비교표
| 권한 문자열 | rw-r--r-- | rwxr-xr-x |
| 소유자(owner) | 읽기 + 쓰기 | 읽기 + 쓰기 + 실행 |
| 그룹(group) | 읽기만 | 읽기 + 실행 |
| 기타 사용자 | 읽기만 | 읽기 + 실행 |
| 실행 가능 여부 | ❌ 실행 불가 (보통 문서) | ✅ 실행 가능 (보통 스크립트/디렉터리) |
| 주 용도 | 설정 파일, 로그, 문서 등 | 스크립트, 명령어, 디렉터리 등 |
✅ 실습 문제
🔸 문항 1
chmod 644 config.txt 명령을 실행하면 어떤 일이 발생하나요?
① 모든 사용자가 읽고 쓸 수 있다
② 소유자만 읽고 쓸 수 있고, 다른 사용자는 읽기만 가능하다
③ 실행 권한이 생긴다
④ 아무도 접근할 수 없다
✅ 정답: ②
🔸 문항 2
chmod 755 run.sh 명령을 실행하면 어떤 상황에서 적절한가요?
① run.sh를 편집 전용 문서로 설정하고 싶을 때
② run.sh를 누구나 실행 가능한 스크립트로 만들고 싶을 때
③ run.sh 파일을 숨기고 싶을 때
④ run.sh를 삭제 방지하고 싶을 때
✅ 정답: ②
🔸 문항 3
아래 권한을 가진 backup/ 디렉터리에 다른 사용자가 파일을 복사하려면, 추가로 어떤 권한이 필요할까요?
① group, other에 쓰기(w) 권한
② 실행(x) 권한만 있으면 됨
③ 읽기(r) 권한만 있으면 됨
④ root 계정이면 관계 없음
✅ 정답: ①
디렉터리에 파일을 생성하거나 삭제하려면 해당 디렉터리에 쓰기(w) + 실행(x) 권한이 필요합니다.
필요하시면 chmod, umask, chown 등과 연계한 **실무 예제형 문제집 (10문항/20문항)**도 만들어드릴 수 있어요. 해드릴까요?
아래는 실무 기반 리눅스 파일 권한/umask/chmod/chown 관련 문제 10문항과 모범답안입니다.
시험이나 현업에 모두 유용하도록 제작했어요.
✅ 리눅스 파일 권한 실무 문제집 (10문항)
📘 문항 1
다음 중 chmod 755 script.sh 실행 후 script.sh 파일에 대한 권한으로 옳은 것은?
① 소유자만 읽기/쓰기/실행 가능하고 나머지는 접근 불가
② 모든 사용자가 읽기 및 실행 가능하고, 소유자만 쓰기 가능
③ 소유자만 실행 가능하고, 그룹은 쓰기 가능
④ 그룹 사용자만 실행 가능하고 나머지는 불가
✅ 정답: ②
📘 문항 2
디렉터리에 x 권한만 있고 r 권한이 없을 경우 어떤 일이 발생하는가?
① 디렉터리 내용은 보이지만 접근은 불가능하다
② 디렉터리 내 파일 목록은 볼 수 없고, 정확한 경로를 알면 접근은 가능하다
③ 아무 작업도 불가능하다
④ 파일을 새로 생성할 수 있다
✅ 정답: ②
📘 문항 3
chmod 644 report.txt는 어떤 의미인가?
① 모든 사용자에게 쓰기 권한 부여
② 소유자는 읽기/쓰기, 나머지는 읽기만 가능
③ 파일을 실행 가능하게 함
④ 파일을 모두에게 숨김 처리
✅ 정답: ②
📘 문항 4
umask 값이 027일 때, 새 디렉터리를 만들면 기본 권한은?
① 750
② 777
③ 755
④ 700
✅ 정답: ①
777 - 027 = 750 → rwxr-x---
📘 문항 5
파일의 소유자와 소유 그룹을 변경하는 명령어는?
① chmod
② usermod
③ chown
④ passwd
✅ 정답: ③
📘 문항 6
chown user1:devgroup test.sh 명령의 의미로 옳은 것은?
① test.sh 파일을 user1이 삭제하도록 함
② test.sh의 소유자를 user1, 소유 그룹을 devgroup으로 변경
③ user1에게만 실행권한을 줌
④ devgroup만 test.sh 읽기 가능하게 설정
✅ 정답: ②
📘 문항 7
다음 중 권한 600이 의미하는 바는?
① 소유자만 읽기/쓰기 가능, 나머지는 전혀 불가
② 모든 사용자가 읽기 가능
③ 그룹만 쓰기 가능
④ 소유자와 그룹이 읽기만 가능
✅ 정답: ①
📘 문항 8
chmod +x install.sh는 무엇을 의미하는가?
① 실행 권한을 모든 사용자에게 부여
② 소유자에게만 실행 권한 부여
③ 실행 권한을 제거
④ 쓰기 권한을 추가
✅ 정답: ①
+x는 기본적으로 모든 사용자에 대해 실행 권한 추가입니다.
📘 문항 9
파일 생성 시 기본 권한이 rw-rw-rw-로 나오는 경우, 이를 rw-r--r--로 제한하려면 적절한 umask는?
① 000
② 022
③ 002
④ 644
✅ 정답: ②
666 - 022 = 644
📘 문항 10
다음 중 디렉터리 권한 설정에 적절한 것은?
① 설정 파일에 755
② 실행 파일에 644
③ 디렉터리에 755
④ 스크립트 파일에 444
✅ 정답: ③
이번엔 Linux의 Sticky Bit 개념을 자세히 설명해드릴게요.
시스템 운영 및 보안 실무에서 중요하게 다뤄지는 개념입니다.
✅ Sticky Bit란?
Sticky Bit 는 공용 디렉터리에서 삭제 제어를 위한 특수 권한입니다.
📌 **"모든 사용자가 쓸 수 있는 디렉터리"에서, 본인이 생성한 파일만 삭제 가능하도록 제한하는 기능입니다.
📍 예시 상황
- /tmp 디렉터리는 모든 사용자가 읽기/쓰기/실행 가능해야 합니다.
- 하지만 아무나 남의 파일을 삭제할 수 있으면 보안 문제가 생김.
- 이때 Sticky Bit을 설정하면, "자기가 만든 파일만 삭제 가능" 하게 됩니다.
✅ 권한에서 Sticky Bit의 표기
| Sticky Bit 미설정 | drwxrwxrwx | 모두 삭제 가능 |
| Sticky Bit 설정 | drwxrwxrwt | 자신만 삭제 가능 |
마지막 문자 t가 붙으면 Sticky Bit이 설정된 디렉터리입니다.
✅ 설정 및 확인 방법
1. 설정 명령어
chmod +t [디렉터리명]
예시:
chmod +t /shared
2. 확인 명령어
결과 예:
drwxrwxrwt 10 root root 4096 Jun 26 12:00 /tmp
drwxrwxrwt → 맨 끝의 t가 Sticky Bit이 설정되었음을 의미합니다.
✅ 해제 방법
chmod -t [디렉터리명]
✅ 실무 예제
| /tmp | 모든 사용자에게 열려 있으나, 자신 파일만 삭제 가능해야 하므로 Sticky Bit 설정되어 있음 |
| /var/spool/mail | 사용자 메일 저장 디렉터리도 일반적으로 Sticky Bit 사용 |
✅ 퀴즈 문제 예시
📘 문항
다음 중 Sticky Bit에 대한 설명으로 옳지 않은 것은?
① Sticky Bit이 설정된 디렉터리에서는 사용자가 자신이 만든 파일만 삭제할 수 있다
② Sticky Bit은 파일에 설정해도 동일하게 작동한다
③ Sticky Bit은 보안 강화를 위한 특수 권한이다
④ /tmp 디렉터리는 기본적으로 Sticky Bit이 설정되어 있다
✅ 정답: ②
🔍 Sticky Bit은 디렉터리에서만 의미 있으며, 파일에는 의미가 없습니다.
SUID(Set User ID)와 SGID(Set Group ID)는 리눅스/유닉스에서 파일의 실행 권한에 부가적으로 설정할 수 있는 특별 권한입니다. 주로 보안 또는 특정 사용자 권한으로 실행을 제한해야 할 때 사용됩니다.
🔹 SUID (Set User ID)
- 적용 대상: 실행 파일
- 기능: 사용자가 파일을 실행할 때, 그 파일의 소유자 권한으로 실행되도록 합니다.
- 목적: 일반 사용자가 루트 권한이 필요한 작업을 제한적으로 실행할 수 있게 할 때 사용됨.
✅ 예시:
- s는 사용자(owner) 권한 자리(rws)에 있음.
- 이 파일은 일반 사용자도 실행할 수 있는데, 실행 시 root 권한으로 실행됨.
- /usr/bin/passwd는 사용자 비밀번호를 변경하는데, /etc/shadow 파일을 수정하려면 root 권한이 필요하기 때문에 SUID가 설정돼 있음.
🔹 SGID (Set Group ID)
- 적용 대상:
- 파일: 파일을 실행할 때 그 파일의 그룹 권한으로 실행됩니다.
- 디렉토리: 해당 디렉토리 내에 생성되는 파일이나 디렉토리의 그룹을 고정합니다.
- 목적:
- 파일: 특정 그룹 권한을 임시로 부여
- 디렉토리: 협업 시 파일 그룹을 동일하게 유지
✅ 예시 (디렉토리):
- s는 그룹 권한 자리(rws)에 있음.
- /shared 디렉토리에 파일을 생성하면, 생성한 파일의 그룹이 자동으로 devteam으로 설정됨 → 협업을 위해 유용
🔸 퍼미션 숫자로 나타내기
- SUID: 4
- SGID: 2
- Sticky bit: 1
예: chmod 4755 somefile → SUID 설정
예: chmod 2755 somedir → SGID 설정
🔐 보안 유의사항
- SUID/SGID 설정은 보안에 민감합니다.
- SUID가 설정된 루트 소유 파일이 잘못 작성되면 **권한 상승(Privilege Escalation)**의 취약점이 생길 수 있습니다.
- 필요할 때만 최소한으로 설정하는 것이 좋습니다.
🔸 리눅스 퍼미션 구조 다시 보기
리눅스의 퍼미션(permission)은 4자리 숫자로 설정할 수 있습니다:
이 숫자는 다음과 같이 구성됩니다:
| 1번째 자리 | 특수 권한 (SUID/SGID/Sticky bit) |
| 2~4번째 자리 | 일반 권한 (Owner, Group, Other) |
🔹 일반 권한: 755
이건 많이 익숙하실 텐데요:
- 7 → rwx (4 + 2 + 1)
- 5 → r-x (4 + 0 + 1)
- 5 → r-x (4 + 0 + 1)
즉,
🔹 특수 권한: 앞자리에 들어감
| SUID | 4 | 실행 시 파일 소유자 권한으로 실행됨 |
| SGID | 2 | 실행 시 파일 그룹 권한으로 실행됨 / 디렉토리에선 그룹 고정 |
| Sticky bit | 1 | 디렉토리에서 본인만 삭제 가능하게 함 |
이 숫자들이 1번째 자리에 들어가면 됩니다.
🔸 예시 1: chmod 4755 somefile
- 4 → SUID 설정
- 755 → 일반 권한
전체 퍼미션을 숫자로 표현하면:
→ 이 파일은:
- Owner: rwx
- Group: r-x
- Other: r-x
- SUID가 설정되어 있음 → 실행하면 소유자 권한으로 동작
🔸 예시 2: chmod 2755 somedir
- 2 → SGID 설정
- 755 → 일반 권한
전체 퍼미션을 숫자로 표현하면:
→ 이 디렉토리는:
- SGID가 설정되어 있어서,
- 디렉토리 내에 생성되는 모든 파일/폴더의 그룹이 상속됨
🔸 시각적으로 보기 (ls -l 결과)
| chmod 4755 file | -rwsr-xr-x ← SUID (s가 사용자 위치에 있음) |
| chmod 2755 dir | drwxr-sr-x ← SGID (s가 그룹 위치에 있음) |
요약하자면:
- chmod 4755: SUID (4) + 일반 퍼미션(755)
- chmod 2755: SGID (2) + 일반 퍼미션(755)
필 아래는 리눅스 특수 권한(SUID, SGID, Sticky Bit) 을 주제로 한 실무 기반 문제집 10문항과 해설입니다.
직무역량 평가 및 실무 보안 강화에도 매우 중요합니다.
✅ 리눅스 특수 권한 실무 문제집 (10문항)
📘 문항 1
다음 중 Sticky Bit의 역할으로 옳은 것은?
① 디렉터리 내 파일을 누구나 수정 가능하게 한다
② 디렉터리 내 파일을 누구나 삭제 가능하게 한다
③ 사용자가 생성한 파일만 자신이 삭제 가능하도록 제한한다
④ 파일 실행 시 루트 권한으로 실행되도록 한다
✅ 정답: ③
📘 문항 2
/tmp 디렉터리에 Sticky Bit이 설정되어 있는지 확인하려면 어떤 명령어를 사용해야 하는가?
① chmod +t /tmp
② ls -ld /tmp
③ stat /tmp | grep t
④ getfacl /tmp
✅ 정답: ②
📘 문항 3
chmod +t /data 명령을 수행하면 /data 디렉터리는 어떻게 변경되는가?
① 모든 사용자가 파일을 삭제할 수 있다
② 오직 관리자만 접근 가능하다
③ 각 사용자만 자신의 파일을 삭제할 수 있다
④ 실행 파일처럼 변경된다
✅ 정답: ③
📘 문항 4
특정 실행 파일에 SUID를 설정하면 어떤 효과가 있는가?
① 파일은 오직 소유자만 실행 가능해진다
② 실행한 사용자가 그 파일의 소유자 권한으로 실행된다
③ 파일 실행시 로그가 자동 저장된다
④ 파일은 루트에 의해서만 삭제된다
✅ 정답: ②
📘 문항 5
chmod 4755 myscript.sh 명령을 수행하면 어떤 권한이 설정되는가?
① 일반 권한 755
② SGID 설정됨
③ SUID 설정됨
④ Sticky Bit 설정됨
✅ 정답: ③
4xxx → SUID
2xxx → SGID
1xxx → Sticky Bit
📘 문항 6
SUID가 설정된 파일은 권한에서 어떻게 표시되는가?
① -rwxr-xr-x
② -rwsr-xr-x
③ -rwSr-xr-x
④ -rwx--s--x
✅ 정답: ②
SUID는 소유자의 실행권한 위치에 s로 표시
📘 문항 7
SGID가 설정된 디렉터리의 효과로 옳은 것은?
① 디렉터리 내 파일이 특정 사용자 소유가 된다
② 디렉터리 내 파일의 소유 그룹이 디렉터리와 동일하게 설정된다
③ 모든 사용자는 삭제 불가능하다
④ 파일은 루트 권한으로 실행된다
✅ 정답: ②
📘 문항 8
chmod 2755 /app 실행 후 /app의 권한은 어떻게 표시되는가?
① drwxr-sr-x
② drwxrwxrwx
③ drwxr-xr-x
④ drwxrwsr-x
✅ 정답: ①
📘 문항 9
다음 중 SGID가 설정된 디렉터리 권한에 대한 설명으로 틀린 것은?
① 파일을 생성할 때 자동으로 디렉터리의 그룹 소유를 따라간다
② SGID는 디렉터리에만 설정할 수 있다
③ SGID가 설정되면 실행 권한 위치에 s로 표시된다
④ SGID는 그룹 협업 시 유용하다
✅ 정답: ②
❗ SGID는 파일과 디렉터리 모두에 설정할 수 있습니다.
📘 문항 10
chmod 1777 /project 명령이 의미하는 바는?
① 읽기 전용 디렉터리 생성
② Sticky Bit과 모든 사용자에게 전체 권한 부여
③ SUID, SGID 설정
④ 디렉터리 숨김 처리
✅ 정답: ②
1000(Sticky) + 777(모든 권한)
✅ 특수 권한 정리표
| SUID | 4 | 파일 | 실행 시 소유자 권한으로 실행 |
| SGID | 2 | 파일/디렉터리 | 파일: 소유 그룹으로 실행 디렉터리: 생성 파일의 그룹 동일화 |
| Sticky Bit | 1 | 디렉터리 | 사용자 자신만 삭제 가능 |