본문 바로가기

os/리눅스

getuid()

1 사용법

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

uid_t getuid(void);
uid_t geteuid(void);

2 설명

getuid()는 현재 프로세스의 실제 유저 아이디를 얻어온다.

geteuid()는 현재 프로세스의 유효 유저 아이디(effective user ID)를 언어온다.

실제 유저 아이디는 프로세스를 호출한 유저의 아이디이다. 유효 유저 아이디는 실행된 파일에 설졍된 SID를 가지는 아이디이다.

3 반환값

유저의 ID를 되돌려준다.

4 에러

이 함수들은 언제나 성공한다. 에러 없음~ 

5 예제

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>

int main(){

             struct passwd *lpwd;
             printf("UID : %d\n",getuid());
             printf("EUID:%d\n",geteuid());
             lpwd = getpwuid(getuid());
             printf("UNAME : %s\n", lpwd->pw_name);
             lpwd = getpwuid(geteuid());
}


위의 프로그램은 프로세스를 싱행 시킨 유저의 ID와 이름, 프로세스의 SID 와 이름을 출력한다. SID를 변경했을 때의 결과를 확인하기 위해서는 다음과 같이 root계정으로 해당 프로그램에 SID를 부여한다음 다른 계정의 유저로 프로그램을 실행시켜 보면 된다.

#chmod +s getuid