OS

[Linux] Setuid, Setgid 란?

파주상남자의 오답노트 ㅣ 2025. 4. 25. 16:14

반응형

✅setuid (Set User ID)

📌 정의

  • 파일 실행 시, 실행한 사용자(user)의 권한이 아닌 → 해당 파일의 소유자 권한으로 실행되도록 하는 권한 비트

🔧 예시

-rwsr-xr-x 1 root root 102K /usr/bin/passwd
  • s → setuid 설정됨 (소유자 권한)
  • 소유자는 root → 일반 유저가 실행해도 root 권한으로 작동함

📍 주요 사용처

  • /usr/bin/passwd: 사용자 비밀번호 변경 프로그램
    • 일반 사용자가 자신의 /etc/shadow를 직접 수정할 수는 없음
    • setuid root로 실행되기 때문에 passwd는 root 권한으로 처리 가능

⚠️ 주의 사항 (보안)

  • 권한 상승의 핵심 수단
  • 취약한 setuid 프로그램이 있으면 일반 사용자가 root 쉘 획득 가능
  • 스크립트 파일에는 setuid 적용 안 됨 (해킹 위험 때문)

✅ setgid (Set Group ID)

📌 정의

  • 파일 또는 디렉터리에 적용될 수 있음

🔹 파일에 적용

  • 실행 시 해당 파일 소유 그룹의 권한으로 실행

🔹 디렉터리에 적용

  • 그 디렉터리 안에 생성되는 파일/디렉터리의 그룹 소유자가 부모 디렉터리와 동일하게 됨

🔧 예시: 디렉터리

mkdir /shared chown root:devgroup /shared chmod 2775 /shared
  • 2는 setgid 비트
  • ls -l 시 drwxr-sr-x처럼 s가 나옴
  • 이후 이 디렉터리에 생성되는 모든 파일은 자동으로 devgroup 그룹 소유가 됨

협업 시 여러 사용자가 하나의 그룹을 통해 공유 파일을 관리할 때 유용


🔐 퍼미션 비트 요약


비트 8진수 파일에서 의미 디렉터리에서 의미
setuid 4 실행 시 파일 소유자 권한 -
setgid 2 실행 시 파일 소유 그룹 권한 새 파일이 상위 그룹을 상속
sticky 1 - 파일 소유자만 삭제 가능 (예: /tmp)

🧠 퍼미션 표시 방식

  • 일반 퍼미션: rwxrwxrwx
  • 특수 비트 포함 시:

 

특수비트 조합 예시
setuid만 -rwsr-xr-x
setgid만 -rwxr-sr-x
둘 다 -rwsr-sr-x

디렉터리에서 setgid:

drwxr-sr-x 2 root devgroup 4096 Apr 25 12:00 shared
 

🛡️ 보안 관점 조언

✔ 확인 방법

find / -perm /4000 -type f 2>/dev/null # setuid find / -perm /2000 -type f 2>/dev/null # setgid (파일) find / -perm /2000 -type d 2>/dev/null # setgid (디렉터리)

✔ 위험한 setuid 파일 예시

  • 임의로 컴파일한 C 프로그램에 setuid를 주는 것은 위험함
  • 퍼미션 잘못 설정된 setuid는 root shell이 될 수도 있음

✔ 대응 방법

  • 시스템 내 모든 setuid 파일은 정기 감사
  • setuid가 필요 없는 바이너리는 chmod u-s로 비트 제거

✅ 요약


항목 setudi setgid
적용 대상 파일 파일, 디렉터리
효과 실행 시 소유자 권한으로 실행 파일: 소유 그룹 권한
디렉토리: 그룹 상속
표시 -rwsr-xr-x -rwxr-sr-x (파일), drwxr-sr-x (디렉토리)
보안 이슈 root 권한 상승 가능 디렉토리 그룹 권한 관리 실수
반응형