자격증 정복/리눅스마스터

리눅스마스터 2급 필기 07 — 파일 소유권·권한·그룹 관리 (chown·chmod·umask·특수 권한) [2차 1과목 리눅스 운영 및 관리]

올드 IT직장인 2026. 10. 7. 05:57

리눅스마스터 2급 필기 07 — 파일 소유권·권한·그룹 관리 (chown·chmod·umask·특수 권한) [2차 1과목 리눅스 운영 및 관리]

출제기준 2차 1과목: 리눅스 운영 및 관리 — 파일 시스템 관련 명령어(소유권·권한)
2차 필기의 첫 관문입니다.
권한은 4/2/1 계산만 익히면 점수를 가져가는 단원이에요!

📌 05편에서 다룬 useradd·passwd·shadow는 1차 범위(기본 명령어)이고, 이번 편은 2차 필기에서 따로 출제되는 소유권·권한·그룹 내용입니다. 1차와 2차를 각각 독립적으로 정리하므로, 계정·그룹 파일은 이번 편에서도 다시 한 번 짚고 갑니다.


왜 소유권과 허가권이 필요할까? ⭐⭐

리눅스는 다중 사용자(Multi-user) 시스템입니다.

수십 명이 한 서버에서 일하는데 남이 내 파일을 마음대로 지우거나, 실수로 시스템 필수 파일이 삭제되면 서비스가 멈춥니다.

그래서 파일마다 소유권(Ownership)과 허가권(Permission)이 붙습니다.

-rw-r--r-- 1 root root 0 10월 25 12:00 file.txt
 ①권한     ② ③소유자 ④그룹        ⑤이름
구분 담당 명령
누구의 것인가 (소유권) chown, chgrp
무엇을 허용하는가 (허가권) chmod
새로 만들 때 기본값은 umask
예외적 특수 상황 Set-UID / Set-GID / Sticky Bit

소유자 변경 — chown ⭐⭐⭐⭐

chown [옵션] [소유자]:[소유그룹] [파일]

명령 의미
chown user1 file.txt 소유자만 user1로 변경
chown user1:group1 file.txt 소유자와 그룹을 동시 변경
chown :group1 file.txt 소유자는 유지, 그룹만 변경
chown -R user1 dir 하위까지 재귀 변경
  • 소유자·그룹은 이름 또는 숫자(UID/GID)로 지정할 수 있습니다.
  • 소유자 변경은 root만 가능합니다. 일반 사용자는 자기 파일도 남에게 넘길 수 없습니다.
  • chown user1: file(콜론 뒤 생략)은 소유자를 바꾸고 그룹을 user1의 로그인 그룹으로 설정합니다.

 

⭐ "그룹은 그대로 두고 소유자만 manager로 변경하는 명령은?" → chown manager file.txt
⚠️ :manager는 그룹만 변경, manager:는 그룹까지 로그인 그룹으로 바뀝니다.

 

chgrp — 소유 그룹만 변경 ⭐⭐⭐

chgrp [옵션] 그룹명 파일 / -R로 하위까지 재귀 적용

 

개발팀(Dev) 김대리가 만든 파일을 운영팀(Ops) 이과장이 수정해야 할 때, root가 chgrp Ops test.txt로 그룹만 바꿔 협업을 가능하게 합니다.

기출 유형: root:root 소유의 디렉터리 ihd를 포함해 하위 전체의 소유 그룹을 ihdgrp로 바꾸기
→ chgrp -R ihdgrp ihd


권한 변경 — chmod ⭐⭐⭐⭐⭐ (최고 빈출)

권한 구조

-rw- r-- rwx
소유자 그룹 기타   ← u(user) / g(group) / o(other)
  r(읽기) w(쓰기) x(실행)
숫자 4 2 1

 

예: rw-(4+2=6) / r--(4) / rwx(4+2+1=7) → 647

 

① 8진수(숫자) 모드

명령 의미
chmod 777 모두 rwx
chmod 755 rwxr-xr-x (실행 파일·디렉터리 표준)
chmod 644 rw-r--r-- (일반 파일 표준)
chmod 722 rwx-w--w-
chmod 744 rwxr--r--

 

② 기호 모드: 대상 + 연산 + 권한

구분 기호 의미
대상 u / g / o / a 소유자 / 그룹 / 기타 / 전체
연산 + / - / = 추가 / 제거 / 덮어쓰기
권한 r / w / x 읽기 / 쓰기 / 실행
목적 명령
소유자에게 실행 권한 추가 chmod u+x script.sh
그룹·기타의 읽기 제거 chmod go-r secret.doc
모든 사용자 읽기만 허용 chmod a=r public.html
복합 설정 chmod u+w,g-w data.txt

 

디렉터리에서 rwx의 의미 ⭐⭐⭐

권한 디렉터리에서의 의미
r 목록 조회(ls)
w 내부 파일 생성·삭제·이름 변경
x 디렉터리 진입(cd) 및 내부 접근

 

💡 디렉터리에서 x가 없으면 사실상 접근이 불가능합니다. 하위까지 한 번에 바꾸려면 chmod -R 755 dir입니다.


기본 권한 결정 — umask ⭐⭐⭐⭐⭐

파일·디렉터리가 생성될 때 시스템이 부여하는 기본 권한에서 제외할 권한을 지정하는 필터입니다.

구분 기본 최대 권한
구분 기본 최대 권한
디렉터리 777
파일 666 (보안상 실행 권한 x는 기본 제외)

 

최종 권한 = 기본 권한 − umask (시험은 이 뺄셈으로 풉니다)

 

대상 umask 계산 결과
대상 umask 계산 결과
파일(666) 022 666−022 644 (-rw-r--r--)
디렉터리(777) 022 777−022 755 (drwxr-xr-x)
파일(666) 002 666−002 664 (-rw-rw-r--)
파일(666) 027 666−027 640 (-rw-r-----)
  • 기본값은 보통 0022이고, umask로 확인 / umask -S는 기호로 출력(u=rwx,g=rx,o=rx)합니다.
  • umask 027처럼 값을 주면 현재 셸에서만 변경되고, 영구 적용은 /etc/profile, ~/.bashrc 등에 기록합니다.
  •  

💡 umask는 앞으로 생성될 파일의 기본값, chmod는 이미 존재하는 파일의 권한을 바꿉니다.

💡 정확히는 뺄셈이 아니라 비트 마스크(AND NOT) 연산입니다. 예를 들어 파일 666에 umask 033을 적용하면 뺄셈은 633이지만 실제 결과는 644입니다. 시험은 022·027처럼 뺄셈과 결과가 같은 값을 쓰므로 뺄셈으로 풀어도 안전합니다.

 

기출 변형 풀이법

질문 풀이
새 파일 권한을 rw-r----- 로 하려면 umask는? rw-r-----=640 → 666−640 = 026
새 파일에서 그룹은 쓰기 불가, 타인은 모든 권한 없음 그룹 쓰기(2)+타인 전체(7) 제거 → umask 027

특수 권한 ⭐⭐⭐⭐⭐ (최고 빈출)

일반 rwx로 해결할 수 없는 상황을 위한 3가지입니다.

구분 숫자 기호 설정 표시 위치 표시
Set-UID 4000 chmod u+s 소유자 x 자리 s (x 없으면 S)
Set-GID 2000 chmod g+s 그룹 x 자리 s (x 없으면 S)
Sticky Bit 1000 chmod o+t 기타 x 자리 t (x 없으면 T)

Set-UID — 실행 중 소유자 권한 획득

/etc/shadow는 root만 수정할 수 있는데, 일반 사용자가 passwd로 자기 비밀번호를 바꾸면 shadow가 수정됩니다.

이 모순을 해결하는 것이 passwd 파일의 Set-UID입니다. 실행하는 동안만 root 권한을 빌리고, 끝나면 원래 권한으로 돌아갑니다.

-rw-r--r-- → chmod 4755 test.txt → -rwsr-xr-x

Set-GID — 그룹 권한 / 디렉터리에서는 그룹 상속

디렉터리에 설정하면 그 안에 새로 만드는 파일·디렉터리가 상위 디렉터리의 소유 그룹을 상속합니다. 팀 협업 디렉터리에 씁니다.

-rwxr-xr-x → chmod 2755 test.txt → -rwxr-sr-x

Sticky Bit — 공용 디렉터리의 삭제 보호

파일 생성은 누구나 가능하지만 삭제·이름 변경은 파일 소유자(와 디렉터리 소유자, root)만 가능하게 합니다. 대표 사례가 /tmp(drwxrwxrwt)입니다.

chmod 1777 /tmp   또는   chmod o+t /tmp

 

소문자 s·t vs 대문자 S·T

표시 의미
소문자 s / t x 권한이 있는 상태에서 특수 권한 설정
대문자 S / T x 권한이 없는 상태에서 특수 권한만 설정 (대개 의미 없음)

 

복합 설정 암기 — 값을 더한다

목적 계산 명령
본인 파일만 삭제 + 그룹 상속 Sticky(1) + Set-GID(2) = 3 chmod 3770 /project
rwxrwxrwx + Sticky 1000 + 777 chmod 1777

 

⚠️ 함정 문제 단골

  • "Sticky Bit를 파일에 부여한다" → 특수 권한의 활용 예로 가장 거리가 먼 것. Sticky는 파일이 아니라 디렉터리에 부여합니다.
  • chmod g+t /project → 틀린 명령. Sticky는 o+t(기타 영역)입니다.
  • chmod o+s → Set-UID가 아니라 기타 영역에 s를 잘못 적용한 표현입니다. Set-UID는 u+s입니다.
  • drwxrwxrwt /tmp를 "모든 사용자에게 모든 권한이 주어진 디렉터리"라고 단정 → 틀림. 끝의 t 때문에 타인 파일은 삭제할 수 없습니다.

💡 Set-UID는 권한 상승 취약점의 원인이 되기 쉬워서, 관리자는 find / -perm -4000으로 Set-UID 파일을 주기적으로 점검합니다.


그룹 관리 ⭐⭐⭐

명령 내용
groupadd 그룹 그룹 생성. -g GID 지정 / -o GID 중복 허용(-g와 함께) / -r 시스템 그룹
groupdel 그룹 그룹 삭제 (어떤 사용자의 기본 그룹이면 삭제 불가)
groupmod -g GID 변경 / -n 새이름 기존이름 그룹명 변경
groups 현재 사용자가 속한 그룹 조회
usermod -g / -G 사용자의 기본 그룹 / 보조 그룹 변경
구분 사용자 그룹
기본 정보 /etc/passwd (7필드) /etc/group (4필드)
암호·유효기간 /etc/shadow (9필드) /etc/gshadow (4필드)
/etc/group : 그룹명 : 암호(x) : GID : 소속 사용자(보조 그룹으로 사용하는 사용자)

 

💡 그룹 패스워드 파일의 실제 이름은 /etc/gshadow입니다. 시험 보기에 /etc/gpasswd가 나오면 개념상 "shadow의 그룹 버전"을 묻는 문제로 판단하세요. (gpasswd는 원래 그룹 관리 명령어이며 gpasswd -a 사용자 그룹으로 멤버를 추가합니다.)

 

⚠️ groupmod -n의 순서는 새 이름이 먼저, 기존 이름이 나중입니다. (헷갈리기 쉬운 부분입니다.)

 

💡 일반 사용자가 groupadd를 실행하면 unable to lock group file 오류가 납니다.

root 권한이 필요하다는 뜻이며, 1차 족보에도 나오는 유형입니다.


기출 문제 Q&A

Q. 일반 사용자가 /etc/shadow를 수정해 비밀번호를 바꿀 수 있도록, 실행하는 동안 root 권한을 빌려 주는 특수 권한은?

A. Set-UID입니다. passwd 명령에 설정되어 있습니다.

 

Q. 공유 디렉터리에서 누구나 파일을 만들 수 있지만 삭제는 본인 파일만 가능하게 하는 방법은?

A. 디렉터리에 Sticky Bit를 부여합니다. (chmod o+t)

 

Q. Sticky Bit를 8진수로 설정할 때 앞에 붙이는 숫자는?

A. 1입니다. (Set-UID 4, Set-GID 2, Sticky 1)

 

Q. chmod 사용법 중 틀린 것은? — chmod g+t /project

A. 틀린 명령입니다. Sticky Bit는 기타(other) 영역에 설정하므로 o+t가 맞습니다.

 

Q. /project 디렉터리에서 "본인이 생성한 파일만 삭제 가능"하고 "새 파일에 그룹 소유권이 자동 부여"되게 하는 명령은?

A. chmod 3770 /project입니다. Sticky(1)+Set-GID(2)=3입니다.

 

Q. umask가 0022일 때 새로 생성되는 파일의 허가권은?

A. -rw-r--r--(644)입니다. 666−022=644.

 

Q. 새 파일의 허가권을 rw-r----- 로 하려면 umask 값은?

A. 026입니다. 666−026=640.

 

Q. 새로 만들어지는 파일에서 그룹은 쓰기 권한이 없고 타인은 모든 권한이 없게 하려면?

A. umask 027입니다. chmod는 이미 만든 파일의 권한을 바꾸는 명령이라 틀립니다.

 

Q. 파일이나 디렉터리의 소유자를 변경하는 명령은? / 소유 그룹만 변경하는 명령은?

A. chown / chgrp입니다. 소유자 확인은 ls -l이고, umask는 생성 권한 제한입니다.

 

Q. 파일 허가권 끝 문자가 t이고 rwxrwxrwx에 해당할 때 chmod 8진수 값은?

A. 1777입니다. Sticky(1000)+777.


💡 실무에서는?

권한 문제는 현장에서 장애 원인 1순위입니다.

 

"웹 서버가 파일을 못 읽는다", "배포 스크립트가 실행이 안 된다" 같은 사고의 대부분이 chmod/chown 문제입니다.

공유 디렉터리는 chmod 2775(Set-GID)로 그룹 협업을 열고, 업로드 임시 디렉터리에는 1777(Sticky)을 겁니다.

 

보안 점검에서는 find / -perm -4000 -type f로 Set-UID 파일을 정기 점검하고, 불필요한 Set-UID가 보이면 바로 제거합니다. 그리고 chmod 777은 장애 때 임시방편으로 쓰고 싶은 유혹이 크지만, 보안 감사에서 가장 먼저 지적받는 항목이니 습관적으로 쓰지 마세요.


핵심 정리

✅ chown 사용자:그룹 (:그룹은 그룹만) / chgrp(그룹만) / -R 재귀
✅ chmod: r=4 w=2 x=1, u g o a / + - =, 755(실행) 644(일반)
✅ 디렉터리: r=목록, w=생성·삭제, x=진입(cd)
✅ umask: 파일 666 / 디렉터리 777 에서 제외, 기본 022 → 644 / 755
✅ Set-UID 4000 u+s(s) / Set-GID 2000 g+s(s, 디렉터리는 그룹 상속) / Sticky 1000 o+t(t, 삭제 보호)
✅ 대문자 S·T = x 권한 없이 특수 권한만 설정
✅ chmod 3770 = Sticky + Set-GID, chmod g+t 는 틀린 명령
✅ /etc/group 4필드 / /etc/gshadow 4필드 / groupmod -n 새이름 기존이름

 

다음 편에서는 디스크·파일시스템 관리(마운트, fdisk, mkfs, fsck, df/du, LVM·RAID)를 다룹니다!

 

궁금한 점은 댓글로 남겨주세요!

반응형
개인정보처리방침  |  블로그 소개