Umount(“/ proc”)syscall for mount命名空间“Invalid Argument”错误

时间:2018-05-20 13:19:42

标签: linux namespaces unmount

我目前正在尝试使用不同的命名空间进行测试。为此,我尝试实现MNT命名空间(与PID命名空间结合),以便此命名空间中的程序无法看到系统上的其他进程。

当尝试使用这样的umount系统调用时(与umount(“/ proc”)相同,或者使用umount2和Force-option):

  if (umount2("/proc", 0)!= 0) 
{
    fprintf(stderr, "Error when unmounting /proc: %s\n",strerror(errno));
    printf("\tKernel version might be incorrect\n");
    exit(-1);
}

系统调用执行以错误号22“无效参数”结束。

在创建具有命名空间的子进程时调用的函数中调用此代码剪切:

 pid_t child_pid = clone(child_exec, child_stack+1024*1024, Child_Flags,&args);

(child_exec函数)。标志设置如下:

int Child_Flags = CLONE_NEWIPC | CLONE_NEWUSER  | CLONE_NEWUTS | CLONE_NEWNET |CLONE_NEWPID |  CLONE_NEWNS |SIGCHLD  ;

使用CLONE_NEWNS获取新的安装命名空间(http://man7.org/linux/man-pages/man7/namespaces.7.html

该计划的输出如下:

Testing with Isolation
Starting Container engine
In-Child-PID: 1
Error number 22
Error when unmounting /proc: Invalid argument

有人可以指出我的错误,所以我可以卸载文件夹吗?提前谢谢

1 个答案:

答案 0 :(得分:0)

除非使用pivot_root后接umount来卸载/,否则无法卸载在其他用户名称空间中装载的内容。您可以超载/proc,而无需卸载旧的/proc