setgid(2)

#include <sys/types.h>
#include <unistd.h>

int setgid(gid_t gid);

setgid(2)함수는 실행중인 프로세스 내에서 effective group id를 변경하는 함수입니다

.

root 계정으로 실행하는 프로그램이 setgid(2)함수를 호출하여 어떤 group id든 설정가능합니다.

 

일반 계정으로 프로그램을 실행시에 내부에서 setgid(2)로 다른 계정으로 effective group id를 변경하려고 하면 일반적으로 변경되지 않습니다. 이유는 다른 계정의 권한을 획득할 수 있으면 권한 관리 체계에 문제가 발생하기 때문입니다.

다만 명령어에 set-group-id bit가 설정된 경우 즉, 명령어에 rwxr-sr-x와 같이 s권한으로 설정된 명령어를 owner 아닌 계정으로 실행을 하면 effective group id와 read group id가 다른 경우가 발생합니다. 이 때, effective group id를 real group id나 set-group-id로 설정된 group으로 변경하는 것만 가능합니다.

 

 

파라미터

gid
    - 변경하고자 하는 effective group id
    - root 계정은 어떤 group id든 설정가능합니다.
    - 일반 계정은 실행된 시점의 real group id와 effective group id만 설정이 가능합니다.

 

RETURN

0
    - 정상적으로 처리 완료되었습니다.


-1
    - 오류가 발생하였으며, 오류내용은 errno에 설정됩니다.
   
  EINVAL : 유효하지 않는 group id입니다.
  EPERM  : 권한이 없거나 gid와 real group id 또는 set-group-id와 일치하지 않습니다.

 


see also :  사용자 및 그룹 관련 Library

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요