>>981
ユーザー権限でか。
ユーザー名前空間を作れば一般ユーザでもchrootやらpivot_rootやらmountやら出来るよ。
ただ権限の後始末に少々気を配る必要があるのと自分のuid以外nobodyに見えてしまうのが難点。
int main() {
unshare(CLONE_NEWUSER);
chdir("/tmp"); chroot(".");
return execl("./busybox", "sh", NULL);
}

mountする場合はユーザー名前空間と同時にファイルシステム名前空間も分離
unshare(CLONE_NEWUSER | CLONE_NEWNS);
FILE *fp = fopen("/proc/self/uid_map", "w");
fputs("0 1000 1", fp); // 外側のuid=1000を内側のuid=0にmap
fclose(fp);
...
cap_set_mode(CAP_MODE_NOPRIV); // drop priviledges