운영체제

[전공 중간고사 정리] 운영체제 – 리눅스 권한 관리

gamjadori 2026. 7. 28. 11:44
728x90

• 파일과 디렉토리의 접근권한 종류와 표기 방법 이해
• chmod 명령어로 접근권한 변경 가능
• umask를 이용한 기본 접근권한 이해
• SetUID / SetGID / Sticky Bit 특수 권한 설명 가능
1. 파일 속성 읽는 법

ls -l 명령어 실행 시 출력 예:
-rw-r–r– 1 root root 0 5월 7 14:34 sample.txt

항목별 의미

• 첫 글자(- 또는 d) : 파일 유형(-=일반파일, d=디렉토리)
• 2~10번째(rw-r–r–) : 접근 권한(9글자, 3칸씩 끊어 읽기)
• 숫자(1) : 하드 링크 수
• 첫 번째 이름(root) : 파일 소유자(User)
• 두 번째 이름(root) : 소유 그룹(Group)
• 크기(0) : 파일 크기(Byte)
• 날짜(5월 7 14:34) : 마지막 수정 날짜/시간
• 마지막(sample.txt) : 파일 이름
2. 접근 권한(Permission)

권한의 구조

• 9글자를 3개씩 끊어서 소유자/그룹/기타 사용자 순서로 읽음
• rwx | r– | r– → 소유자(User) | 그룹(Group) | 기타사용자(Other)
• 암기법: ‘나(소유자) / 우리 편(그룹) / 기타 남 남(기타)’ 순서로 읽으면 됨!

권한의 3가지 종류

• r(읽기, read) : 파일에서는 읽기・복사 가능, 디렉토리에서는 ls로 목록 볼 수 있음
• w(쓰기, write) : 파일에서는 수정・삭제 가능, 디렉토리에서는 파일 생성・삭제 가능
• x(실행, execute) : 파일에서는 프로그램 실행 가능, 디렉토리에서는 cd로 이동 가능
• • : 권한 없음
3. 숫자로 권한 표현하기(핵심!)

기본 공식: r=4, w=2, x=1
권한이 있으면 해당 숫자를, 없으면 0을 넣고 더함

권한별 값

• rwx = 4+2+1 = 7 (읽기+쓰기+실행)
• rw- = 4+2+0 = 6 (읽기+쓰기)
• r-x = 4+0+1 = 5 (읽기+실행)
• r– = 4+0+0 = 4 (읽기만)
• -wx = 0+2+1 = 3 (쓰기+실행)
• -w- = 0+2+0 = 2 (쓰기만)
• –x = 0+0+1 = 1 (실행만)
• — = 0+0+0 = 0 (권한 없음)

전체 권한을 세 자리로 표기

• rwxrwxrwx = 777 : 모든 사람이 모든 권한을 가짐
• rwxr-xr-x = 755 : 소유자는 모두, 그룹・기타는 읽기+실행
• rw-r–r– = 644 : 소유자는 읽기+쓰기, 나머지는 읽기만
• rw-rw-r– = 664 : 소유자・그룹은 읽기+쓰기, 기타는 읽기만
• rw—–– = 600 : 소유자만 읽기+쓰기, 나머지 접근 불가
• rwx—— = 700 : 소유자만 모든 권한, 나머지 접근 불가
4. chmod — 권한 변경 명령어

형식: chmod [옵션] 권한모드 파일명 | 옵션 -R: 하위 디렉토리까지 모두 변경

숫자 모드 사용
chmod 755 sample.txt
chmod 644 report.txt
chmod -R 755 mydir/     (하위 디렉토리 포함)

기호 모드 사용
형식: chmod [누구][연산자][권한] 파일명

사용자 카테고리 기호

• u : 소유자(User)
• g : 그룹(Group)
• o : 기타 사용자(Other)
• a : 전체 사용자(All)

연산자

• • : 권한 추가
• • : 권한 제거
• = : 권한 설정(나머지 제거)

접근 권한: r/w/x = 읽기/쓰기/실행

기호 모드 예시

• chmod u+w file : 소유자에게 쓰기 권한 추가
• chmod u-x file : 소유자의 실행 권한 제거
• chmod g+wx file : 그룹에 쓰기+실행 권한 추가
• chmod o-r file : 기타 사용자의 읽기 권한 제거
• chmod a+x file : 모든 사용자에게 실행 권한 추가
• chmod u=rwx file : 소유자 권한을 rwx로 설정
• chmod go+w file : 그룹+기타 사용자에게 쓰기 권한 추가
• chmod u+x,go+w file : 소유자 실행 추가 & 그룹/기타 쓰기 추가
5. umask — 기본 권한 설정

기본 권한이란?

• 새 파일/디렉토리를 만들 때 자동으로 부여되는 최대 권한
• 파일 기본 권한 : 666(보안상 실행 권한은 처음부터 제외)
• 디렉토리 기본 권한 : 777

umask의 역할
핵심 공식: umask = 기본 권한에서 “빼낼 권한”을 지정하는 값 = 최종 권한 = 기본 권한 - umask

• umask가 1인 비트는 해당 권한을 꺼버리고, 0이면 그대로 유지

umask 022일 때(가장 일반적인 설정)

• 파일 : 기본 666, umask 022 → 최종 644(rw-r–r–)
• 디렉토리 : 기본 777, umask 022 → 최종 755(rwxr-xr-x)

주요 umask 값 비교

• umask 000 : 파일 666(rw-rw-rw-), 디렉토리 777(rwxrwxrwx) — 모든 권한 허용
• umask 022 : 파일 644(rw-r–r–), 디렉토리 755(rwxr-xr-x) — 그룹/기타의 쓰기 권한 제거(기본값)
• umask 002 : 파일 664(rw-rw-r–), 디렉토리 775(rwxrwxr-x) — 기타 사용자의 쓰기 권한만 제거
• umask 027 : 파일 640(rw-r—–), 디렉토리 750(rwxr-x—) — 그룹 읽기만, 기타 모두 제거
• umask 077 : 파일 600(rw—––), 디렉토리 700(rwx——) — 소유자만 접근(보안 강화)

umask 명령어
umask         # 현재 마스크 값 확인
umask -S      # 기호 형식으로 출력
umask 022     # 마스크 값을 022로 변경

6. 특수 접근 권한(Special Permissions)
• 권한은 원래 4자리. 생략된 맨 앞 자리가 특수 접근 권한
• 예: chmod 4755 file → 맨 앞 ‘4’가 특수 권한

세 가지 특수 권한

• SetUID : 숫자 4, 기호 s(소유자 자리), 실행 파일에 적용, 파일 소유자(보통 root) 권한으로 실행됨
• SetGID : 숫자 2, 기호 s(그룹 자리), 실행 파일・디렉토리에 적용, 그룹 권한으로 실행 / 디렉토리 내 그룹 상속
• Sticky Bit : 숫자 1, 기호 t(기타 자리), 디렉토리에 적용, 자기 파일은 자기만 삭제 가능(공용 폴더 보호)

대소문자에 따른 의미

• 소문자 s, t = 정상(실행 권한 있음)
• 대문자 S, T = 비정상(실행 권한 없는 상태! 보안 문제 가능성)

예시
-rwsr-xr-x → SetUID 정상 상태(소문자 s)
-rwSr–r– → SetUID 비정상!(대문자 S, 실행권한 없음)
drwxrwxrwt → Sticky Bit 정상(/tmp 폴더가 이렇게 생김)

실생활 예시

SetUID — 비밀번호 변경(passwd 명령어)

• 일반 사용자가 passwd를 실행하면 내부적으로 root 권한이 필요
• SetUID 덕분에 잠깐 root 권한으로 실행되어 비밀번호 파일(/etc/shadow)을 수정
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root … /usr/bin/passwd

Sticky Bit — /tmp 공용 폴더

• 누구나 파일을 만들 수 있지만, 내 파일은 나만 지울 수 있음
• 없으면 다른 사용자가 남의 파일을 마음대로 삭제할 수 있어 위험
ls -ld /tmp
drwxrwxrwt 10 root root … /tmp ← 맨 끝 t가 Sticky Bit

특수 권한 파일 찾기
find / -perm -4000 -type f 2>/dev/null    (SetUID 파일 찾기)
find / -perm -2000 -type f 2>/dev/null    (SetGID 파일 찾기)
find / -perm -1000 -type f 2>/dev/null    (Sticky Bit 파일 찾기)

참고: 2>/dev/null은 에러 메시지를 /dev/null(쓰레기통)로 버린다는 의미

보안 주의사항

• SetUID/SetGID 잘못 설정 시 권한 상승(Privilege Escalation) 취약점 발생
• SetUID 파일이 /usr/bin, /bin, /sbin 이외 경로에 있으면 점검 필요
• Sticky Bit 없는 /tmp는 다른 사용자가 남의 파일을 삭제할 수 있어 필수 설정
7. 시험 대비 핵심 요약 ⭐

기본 공식: r=4, w=2, x=1 — 무조건 암기!

핵심 내용 정리
① 파일 속성 읽는 순서 : 파일유형 + 권한(9자) + 링크수 + 소유자 + 그룹 + 크기 + 날짜 + 이름
② 권한 세 묶음 : 소유자(User) / 그룹(Group) / 기타(Other)
③ r=4, w=2, x=1 : rwx=7, rw-=6, r-x=5, r–=4
④ chmod 숫자 모드 : chmod 755 file(소유자 모두, 그룹・기타 읽기+실행)
⑤ chmod 기호 모드 : chmod u+x file(소유자에게 실행 권한 추가)
⑥ umask의 의미 : 파일 생성 시 빼놓을 권한 지정(기본권한 - umask)
⑦ 파일 기본권한 : 666(보안상 실행권한 없음), 디렉토리는 777
⑧ umask 022 결과 : 파일 → 644, 디렉토리 → 755
⑨ SetUID : 숫자 4(chmod 4755 file), 소유자 권한으로 실행
⑩ SetGID : 숫자 2(chmod 2755 file), 그룹 권한으로 실행
⑪ Sticky Bit : 숫자 1(chmod 1777 dir), 공용폴더 파일 보호
⑫ 소/대문자 특수권한 : 소문자(s,t)=정상, 대문자(S,T)=실행권한 없음