학습 가이드
#20주 실습 커리큘럼

SUID·SGID·world-writable 파일 감사

_리눅스 실습 커리큘럼 11/40 · 권한과 사용자 (6주차)_

umask 와 sticky 로 특수 권한을 처음 봤습니다. 이번 편은 나머지 둘, SUID 와 SGID 입니다. 서버를 인수하면 이런 비트가 걸린 파일과 누구나 쓸 수 있는 파일을 목록으로 뽑는 것이 보안 점검의 시작입니다.

SUID·SGID 파일 감사, 왜 필요한가

  • SUID 실행 파일은 일반 사용자가 실행해도 소유자(대개 root) 권한으로 동작해 권한 상승의 표적입니다.
  • world-writable 파일은 아무 계정이나 내용을 바꿀 수 있어 악성 코드 삽입 경로가 됩니다.
  • 리눅스마스터 1급·LPIC-1 보안 단원이 이 점검을 다룹니다.

이번 편에서 익힐 것

  1. 특수 권한 세 자리 — SUID 4, SGID 2, sticky 1
  2. 비트로 찾기 — find -perm -4000, -perm -2000, -perm -o+w
  3. 조건 묶기 — \( -o \)
  4. 감사 리포트 — stat -c 형식 출력

SUID·SGID 파일 감사 핵심 명령어

find / -type f -perm -4000 2>/dev/null                        # SUID 파일
find / -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null   # SUID 또는 SGID
find /home -type f -perm -o+w                                 # world-writable 일반 파일
find /srv -perm -o+w                                          # 디렉터리 포함

find /usr/local/bin -type f -perm /111 -exec stat -c '%a %U %n' {} \;   # 실행 파일 리포트

| 비트 | 숫자 | 표시 | 효과 |
|---|---|---|---|
| SUID | 4xxx | 소유자 x 자리 s | 파일 소유자 권한으로 실행 |
| SGID | 2xxx | 그룹 x 자리 s | 파일 그룹 권한 / 디렉터리면 그룹 상속 |
| sticky | 1xxx | 기타 x 자리 t | 디렉터리에서 소유자만 삭제 |

  • -perm -값 은 "그 비트가 모두 켜진", -perm /값 은 "하나라도 켜진".
  • 2>/dev/null 은 권한 없는 디렉터리의 오류 메시지를 숨겨 목록 파일에 섞이지 않게 합니다.

SUID·SGID 파일 감사 자주 하는 실수

  • -o 를 쓸 때 괄호 이스케이프 누락 — \( \) 가 필요합니다.
  • -type f 유무 — 지문이 "일반 파일"인지 "디렉터리 포함"인지 확인하세요.
  • 리포트 형식 — stat -c 의 형식 문자열과 열 순서를 지문 그대로.

SUID·SGID 파일 감사 실습 문제

  • SUID/SGID 파일 감사 목록 만들기
  • world-writable 일반파일 목록 추출
  • world-writable 파일 찾기
  • stat으로 실행 파일 목록 만들기

다음 편

다음 편은 소유권 일괄 변경과 협업 디렉터리 setgid 입니다. 화·금요일에 이어집니다.

<!-- publish_key:linux-path-20w-p11-post -->

댓글 0

아직 댓글이 없습니다. 궁금한 점이나 풀이 경험을 남겨 보세요.