假设我有一些进程A
clone
进程B
带有标记CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNS
,此进程B
有pid = PID。然后在进程A
中,我写入/proc/PID/uid_map
字符串0 1000 1
(1000是我的用户的uid)。
如果我在我的用户A
下运行./A
,这样就可以了,正在处理B
getuid()
给我0
。但是如果我像A
一样sudo ./A
,那么getuid()
中的B
会给我65534(nobody
)。
当我搜索sudo
代码时,它不会创建任何新的命名空间。所以我的问题是这里发生了什么以及为什么在sudo下我无法正确设置映射0 1000 1
?
更新
另外,如果我将suid添加到A
:
$ sudo su
# chown 0:0 A
# chmod u+s A
# exit
$ ./A
然后B
再次给我0
。