Linux 시스템 보안 기초 · 19/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
SGID는 SUID의 '그룹 버전'이지만, 파일에 붙을 때와 디렉터리에 붙을 때 의미가 완전히 다릅니다. 이 차이를 모르면 정상 SGID 디렉터리를 취약점으로 오탐하거나, 진짜 위험을 놓칩니다.
즉 파일 SGID는 '권한 상승 가능성', 디렉터리 SGID는 '그룹 상속 편의'로 성격이 다릅니다.
파일 SGID 디렉터리 SGID
실행 → EGID = 파일그룹 새 파일의 그룹 = 부모 디렉터리 그룹
│ │
▼ ▼
그룹 권한으로 동작(악용 시 상승) 협업 디렉터리 그룹 통일(정상 용도)
파일 SGID는 SUID와 유사한 위험 구조를 갖되 '그룹' 단위입니다. 예를 들어 SGID가 shadow 그룹으로 붙은 범용 실행 파일은 shadow 그룹 권한으로 민감 파일에 접근할 수 있습니다.
디렉터리 SGID는 위험이 아니라 기능입니다. /var/log 등 일부 시스템 디렉터리, 팀 공유 폴더에서 그룹 소유권을 통일하는 정상 용도로 쓰입니다. 그래서 SGID 디렉터리를 무조건 취약으로 보면 오탐입니다.
# SGID '파일'만 (권한 상승 관점)
sudo find / -xdev -perm -2000 -type f 2>/dev/null
# SGID '디렉터리' (대개 정상, 맥락 확인용)
sudo find / -xdev -perm -2000 -type d 2>/dev/null | head
실습 컨테이너의 실제 SGID 파일 목록입니다. (실제 캡처)
$ find /usr/bin -perm -2000 -type f 2>/dev/null
/usr/bin/chage
/usr/bin/expiry
/usr/bin/crontab
/usr/bin/ssh-agent
chage, crontab, ssh-agent 등은 표준 SGID 파일입니다. 여기에 낯선 범용 도구나 커스텀 바이너리가 SGID로 나타나면 SUID와 동일한 기준으로 조사합니다.
SUID/SGID 점검은 항상 '표준 기준선 대비 차이'와 '해당 그룹이 무엇에 접근 가능한가'를 함께 봐야 합니다.
SGID도 SUID와 함께 Wazuh SCA/rootcheck의 정기 점검 항목입니다. SIEM에서는 SUID/SGID를 하나의 '특수 권한 실행 파일' 인벤토리로 관리하고, 신규 등장 시 경보합니다. 디렉터리 SGID는 오탐을 줄이기 위해 파일 SGID와 분리해 다룹니다.
[ ] SGID 파일과 디렉터리를 분리해 조회
[ ] 파일 SGID의 그룹 접근 범위 확인
[ ] 표준 기준선과 diff
[ ] 민감 그룹 SGID 우선 조치
다음 편에서는 20. Sticky Bit 보안 를 다룹니다. 공용 디렉터리를 지키는 Sticky Bit를, /tmp를 중심으로 봅니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.