Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

seteuid(2)

1장. seteuid(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

유효 사용자 ID를 설정한다.


1.1절. 사용법

#include <unistd.h>

int seteuid(uid_t euid);
		


1.2절. 설명

유효:::사용자:::ID(:12) 설정을 하기 위해서 사용된다. 유효 사용자 ID 는 파일(:12) 생성과 접근등에 영향을 미치게 된다.


1.3절. 반환값

성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다. 보통 슈퍼유저권한일 경우 사용가능한 함수이다.


1.4절. 에러

다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.

EPERM

현재 프로세스의 권한이 슈퍼유저권한이 아닐때


1.5절. 예제

#include <unistd.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    int fd;
    int state;

    // 500 은 yundream 이라는 계정의 UID 이다.
    // yundream 유저ID로 effective UID 를 설정한다.  
    state = seteuid(500);

    if (state < 0)
    {
        perror("error ");
       exit(0);
    }

    // 테스트용 파일을 하나 생성한다. 
    if ((fd = open("setuid.txt", O_CREAT|O_RDWR, S_IRWXU|S_IRUSR)) < 0 )
    {
        perror("error ");
        exit(0);
    }

    close(fd);
}
		
위 프로그램을 실행시키면 현재 디렉토리(:12)에 setuid.txt 라는 파일을 생성하는데 다음과 같은 권한으로 생성된다.
[root@localhost testdir]# ls -al
drwxr-xr-x    2 yundream yundream     4096 10월 31 23:25 .
drwxr-xr-x    8 root     root         4096 10월 31 23:13 ..
-rwx------    1 yundream root            0 10월 31 23:13 setuid.txt
		
파일이 생성될때 effective UID 인 yundream ID 로 생성되었음을 알수 있다.