이 름
setgid − 그 룹 식 별 자 (identity)를 설 정 한 다 .
사 용 법
#include <unistd.h>
int setgid(gid_t gid)
설 명
setgid는 현 재 프 로 세 스 의 유 효 그 룹 ID를 설 정 한 다 . 만 일 호 출 한 프 로 세 스 가 슈 퍼 유 저 라 면 , 실 제 그 룹 ID와 저 장 된 (saved) 그 룹 ID도 역 시 설 정 된 다 .
리 눅 스 에 서 , setgid는 _POSIX_SAVED_IDS 특 징 를 갖 는 POSIX 버 전 에 맞 게 구 현 된 다 . 이 는 (루 트 이 외 ) setgid 프 로 그 램 이 해 당 그 룹 의 권 한 모 두 를 버 리 고 , 특 권 없 는 작 업 을 수 행 한 뒤 , 안 전 한 방 법 으 로 다 시 원 래 의 유 효 그 룹 ID로 돌 아 오 도 록 한 다 .
만 일 사 용 자 가 루 트 이 거 나 프 로 그 램 이 setgid 루 트 라 면 , 각 별 한 주 의 가 필 요 하 다 . setgid 함 수 는 호 출 한 프 로 세 스 의 유 효 gid를 검 사 하 여 만 일 슈 퍼 유 저 라 면 해 당 그 룹 ID의 모 든 프 로 세 스 를 gid로 설 정 한 다 . 이 후 프 로 그 램 은 다 시 루 트 권 한 을 얻 는 것 은 불 가 능 하 다 .
그 래 서 , 일 시 적 으 로 루 트 권 한 을 버 리 고 , 루 트 가 아 닌 그 룹 의 권 한 을 갖 고 수 행 된 후 다 시 루 트 권 한 을 회 복 하 려 하 는 setgid-root 프 로 그 램 은 setgid를 사 용 할 수 없 다 . 이 렇 게 하 기 위 해 서 는 (non-POSIX, BSD) setegid를 사 용 할 수 있 다 .
반 환 값
성 공 시 , 0이 리 턴 된 다 . 에 러 이 면 , −1이 리 턴 되 며 , errno는 적 당 한 값 으 로 설 정 된 다 .
에 러
EPERM |
사 용 자 가 슈 퍼 유 저 가 아 니 며 , uid가 호 출 한 프 로 세 스 의 유 효 또 는 저 장 된 사 용 자 ID와 일 치 하 지 않 는 다 . |
호 환
SVr4, SVID.
관 련 항 목
getgid(2), setregid(2), setegid(2)
역 자
정 강 훈 <skyeyes [AT] soback.net>, 2000년 4월 30일