我正在尝试使用Linux名称空间创建一个沙箱环境。我在https://github.com/swetland/mkbox上找到了一个很好的例子,它大致可以做我想要的事情,但我希望沙箱中出现一个可信的/proc。我该怎么做呢?
我尝试在" proc“上绑定挂载proc FS,但使用EINVAL失败。当我尝试正常挂载"proc“时,它会生成EPERM。
想法?
发布于 2014-05-03 03:11:15
一位本地大师为我解决了这个问题: proc必须使用(无文档记录?)MS_REC标志,如下所示:
ok(mount, "/proc", "proc", NULL, MS_REC|MS_BIND, NULL);显然,只有在没有设置CLONE_PIDNS的情况下,绑定挂载才会做一些有用的事情。
发布于 2016-02-10 02:06:43
我没有仔细查看您的提交,以确定这是否是您的问题,但如果您有CLONE_NEWUSER | CLONE_NEWNS但没有CLONE_NEWPID,就会发生EPERM。这是因为为了挂载proc,您需要在与当前PID名称空间相对应的用户名称空间中使用CAP_SYS_ADMIN,而不是在当前用户名称空间中。
Linux4.4、fs/proc/root.c、lines 112–117
ns = task_active_pid_ns(current);
options = data;
/* Does the mounter have privilege over the pid namespace? */
if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN))
return ERR_PTR(-EPERM);https://stackoverflow.com/questions/23417521
复制相似问题