C 如何允许子进程创建嵌套的用户命名空间?
我使用以下代码在新用户命名空间中创建子进程:C 如何允许子进程创建嵌套的用户命名空间?,c,linux,kernel,C,Linux,Kernel,我使用以下代码在新用户命名空间中创建子进程: pid_t child = syscall (SYS_clone, SIGCHLD | CLONE_NEWNS | CLONE_NEWUSER, NULL, NULL, NULL); 在父进程中,我编写uid\u映射和gid\u映射,并将当前uid和pid映射到自身 在子进程中,我将调用execvp来启动一个新进程,该进程可以使用CLONE\u NEWUSER标志调用unshare,新用户名称空间中不允许该操作 我的问题是,是否允许对由execvp
pid_t child = syscall (SYS_clone, SIGCHLD | CLONE_NEWNS | CLONE_NEWUSER, NULL, NULL, NULL);
在父进程中,我编写uid\u映射
和gid\u映射
,并将当前uid和pid映射到自身
在子进程中,我将调用execvp
来启动一个新进程,该进程可以使用CLONE\u NEWUSER
标志调用unshare
,新用户名称空间中不允许该操作
我的问题是,是否允许对由execvp
启动的进程执行unshare
操作
我遵循了
user\u namespace
手册页中的示例,并使用pipe
确保在调用execvp
之前编写uid\u映射和gid\u映射。从man 2 unshare
中,您似乎遇到了以下问题:
EPERM CLONE_NEWUSER was specified in flags, but either the effective
user ID or the effective group ID of the caller does not have a
mapping in the parent namespace (see user_namespaces(7)).