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



chroot

概要

chrootはプロセスのルートディレクトリを指定したディレクトリに変更します。

chrootでルートディレクトリ変更後には上位ディレクトリにアクセスすることができなくなります。

実行プロセスの子プロセスもchrootのルートディレクトリを引き継ぎます。


chrootを実行しても、プロセスのカレントディレクトリは変更されません。

そのため、chroot実行後には新しいルートディレクトリにchdirで移動する必要があります。

また、chrootの実行にはroot権限が必要となります。


サンプルプログラム

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

int
main(void)
{
    int rc = 0;

    rc = chroot("./tmp");
    if(rc < 0){
        printf("Error: chroot(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    rc = chdir("./tmp");
    if(rc < 0){
        printf("Error: chdir(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    return(0);
}


関連

C言語



スポンサード リンク