我正在尝试通过使用unshareand newuidmap命令来更好地理解用户名称空间。
这些是我运行的命令:
[root@host ~]$ ls -l /usr/bin/newuidmap
-rwsr-xr-x 1 root root 32944 May 16 19:37 /usr/bin/newuidmap
[root@host ~]$ unshare -U bash namespace
[nobody@host ~]$ echo $$
7134
[nobody@host ~]$ newuidmap 7134 65534 5000 1
newuidmap: write to uid_map failed: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
/ etc / subuid:
nobody:5000:1
root:5000:1
Run Code Online (Sandbox Code Playgroud)
知道为什么这失败了吗?
然后,我尝试newuidmap在父命名空间的同一PID上运行命令,它似乎可以正常工作:
[root@host ~]$ newuidmap 7134 65534 5000 1
[root@host ~]$ cat /proc/7134/uid_map
65534 5000 1
Run Code Online (Sandbox Code Playgroud)
但是,当我从新名称空间中运行进程时,它似乎仍以root身份而不是UID 5000身份运行:
[nobody@host ~]$ exec sleep 20
Run Code Online (Sandbox Code Playgroud)
从另一个shell:
[root@host ~]$ …Run Code Online (Sandbox Code Playgroud)