02. 클라우드 보안 공부/실습로그

✅ [실습로그] SUID, SGID, Sticky Bit 권한 설정 실습

taegi- 2025. 5. 4. 00:09

🎯 실습 목표

  • 리눅스 파일 시스템에서 사용되는 특수 권한인 SUID, SGID, Sticky Bit의 개념과 동작 원리를 실습을 통해 익힌다.
  • 각 권한이 파일 또는 디렉터리에서 어떻게 작동하는지 확인하고,
    보안상 적절한 권한 설정이 왜 중요한지 체감하는 것을 목표로 한다.

🖥️ 실습 환경

  • 운영체제: Rocky Linux 9.5 CLI
  • 실습 사용자: root, user01, user02
  • 실습 디렉터리: /suid_test, /sgid_test, /sticky_test
  • 실습 파일: test.sh (간단한 실행 스크립트)

⚙️ 실습 과정

1. SUID 실습

test.sh 파일을 root 소유로 만든 후, 일반 사용자에게 실행 권한을 부여하였다.
다음으로 chmod u+s test.sh 명령으로 **SUID(소유자 권한으로 실행)**를 설정하였다.

user01 계정으로 로그인한 후, test.sh를 실행하였을 때 다음과 같은 현상이 확인되었다.

  • 실행 주체는 user01이지만, whoami 명령의 결과는 root로 출력되었다.
    이는 실행은 일반 사용자지만 권한은 소유자인 root로 작동되었음을 의미한다.

이 구조는 passwd, sudo 등의 시스템 명령어가 SUID 설정으로 동작하는 방식과 동일하다.

2. SGID 실습

디렉터리 /sgid_test를 생성한 후, 그룹 소유자를 group1으로 설정하였다.
그 후 chmod g+s /sgid_test 명령으로 SGID 설정을 적용하였다.

user01과 user02 모두 group1에 속해 있는 상태에서 파일을 생성하면,
소유자는 각각 user01, user02이지만 그룹 소유자는 자동으로 group1으로 설정되었다.

이 설정은 협업 디렉터리에서 모든 파일의 그룹을 통일할 수 있게 해준다.

3. Sticky Bit 실습

/sticky_test 디렉터리를 생성하고, 여러 사용자(user01, user02)가 파일을 생성할 수 있도록 권한을 부여하였다.
이후 chmod +t /sticky_test 명령으로 Sticky Bit를 적용하였다.

user01이 생성한 파일을 user02가 삭제하려고 시도하였으나,
Permission denied 메시지가 출력되었다.

Sticky Bit은 디렉터리 내에서 자신이 생성하지 않은 파일은 삭제할 수 없도록 제한하며,
공용 디렉터리(/tmp)에서 흔히 사용된다.


✅ 결과 요약

항목확인 결과
SUID 설정 일반 사용자가 파일 실행 시, 소유자(root) 권한으로 동작
SGID 설정 디렉터리 내 모든 파일의 그룹이 자동으로 동일하게 설정됨
Sticky Bit 설정 다른 사용자가 생성한 파일 삭제 시도 시 권한 거부됨
 

🔜 앞으로의 목표

  • 실제 서비스 환경에서 SUID가 설정된 명령어 목록을 검토하고, 불필요한 SUID 제거를 통한 보안 강화 실습을 진행할 예정이다.
  • SGID와 Sticky Bit이 실제 서비스 운영 디렉터리에 어떻게 응용되는지 더 많은 사례로 확인하고,
    파일 공유 환경에서의 보안 정책 설계로 확장해볼 계획이다.

💬 느낀 점

이번 실습은 단순한 권한 설정을 넘어서, 리눅스에서 어떤 상황에서 권한을 제한하거나 위임할 수 있는지를 명확히 보여주었다.
특히 SUID는 강력하지만 잘못 사용할 경우 심각한 보안 취약점이 될 수 있음을 느꼈고,
Sticky Bit은 단순한 디렉터리 보호 기능을 넘어 공용 환경에서의 안전한 파일 관리 방식임을 이해할 수 있었다.
권한은 단순히 허용/차단이 아니라 시스템 보안과 운영 효율성을 함께 결정하는 핵심 요소라는 점을 다시금 깨달았다.