ISSETUGID(2)

명칭
issetugid - 현재의 프로세스의 uid 또는 gid 의 변화에 의한 오염 상황

프로그램 라이브러리
libc

서식
<unistd.h> int issetugid(void)

해설
issetugid() 함수는, 프로세스의 환경 또는 메모리아드레스 공간이 “오염되고 있다” (이)라고 보여지는 경우 1 을 돌려주어, 그렇지 않은 경우는 0 을 돌려줍니다.

setuid 또는 setgid 비트의 어느 쪽인지가 설정된 프로세스를 execve(2) 시스템 콜로 실행했다 (그리고 결과적으로 추가의 특권이 주어졌다) 경우, 혹은 프로세스의, 열매 유저 ID, 실효 유저 ID, 보존된 유저 ID, 그룹 ID 의 어느쪽이든가 실행 후로 변경되었을 경우, 그 프로세스는 오염되고 있으면(자) 보여집니다.

이 시스템 콜은, 유저로부터 얻을 수 있던 정보를 사용하는 것이 안전한지 어떤지를 프로그램 라이브러리 routine (예를 들어 libc 나 libtermcap)가 신뢰성을 가져 판정할 수 있도록(듯이) 하기 위해서 존재합니다. 특히 getenv(3) (으)로부터의 결과를, 오퍼레이션의 제어를 위해서(때문에) 사용하는 경우에는 의혹을 갖아 볼 필요가 있습니다.

“오염되었다” 상태는, fork(2) 시스템 콜 (혹은 popen(3) (와)과 같은 fork 를 호출하는 다른 프로그램 라이브러리 코드)의 결과로서, child process에 계승됩니다.

다른 프로그램을 실행할 준비를 할 경우에 모든 특권을 클리어 하는 프로그램은, 환경도 리셋트 하면(자) 상정됩니다. 따라서 “오염되었다” 상태는 인도해지지 않습니다. setuid 를 개시하지만 오염되어 있지 않다 프로세스를 작성할 수 있을 필요가 있다 su(1) (와)과 같은 프로그램에는 이것은 중요합니다.

에러
issetugid() 함수는 반드시 정상적으로 완료하므로, 에러를 나타내기 위한 반환값은 없습니다.

관련 항목
execve(2), fork(2), setegid(2), seteuid(2), setgid(2), setregid(2), setreuid(2), setuid(2)

역사
issetugid() 함수는 OpenBSD 2.0 그리고 처음 등장해, FreeBSD 3.0 그렇지만 실장되었습니다.