C言語システムコール-setuid

setuid

概要

setuidは実ユーザID、実効ユーザID、実グループID、実効グループIDを設定します。

setuid()を使用したプログラムの実行には、root権限(実効ユーザIDが0の状態)が必要になります。


setuid関連システムコール

  • seteuid()
    • 実効ユーザIDのみを設定します。
  • setreuid()
    • 実ユーザIDと実効ユーザIDを設定します。
  • setgid()
    • 実グループIDのみを設定します。
  • setegid()
    • 実効グループIDのみを設定します。
  • setreuid()
    • 実グループIDと実効グループIDを設定します。

サンプルプログラム


#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>

static void
print_idinfo(void)
{
    printf("uid  = %d\n", (int)getuid());
    printf("euid = %d\n", (int)geteuid());
    printf("gid  = %d\n", (int)getgid());
    printf("egid = %d\n", (int)getegid());
}

int
main(void)
{
    int rc = 0;

    rc = setuid(geteuid());
    if(rc < 0){
        printf("Error: setuid(%d) %s\n", errno, strerror(errno));
        return(-1);
    }
    print_idinfo();

    return(0);
}


関連ページ