我观察到以下我无法解释的现象。添加CAP_SYS_ADMIN
功能后,unshare
不再能够写入/proc/self/setgroups
.
事实上,写入这个文件需要这个能力,但这是通过改变用户命名空间来实现的。那么为什么向父进程添加功能会阻止写入该文件呢?
me@myhost:~$ unshare -r
root@myhost:~# exit
logout
me@myhost:~$ sudo setcap cap_sys_admin=ep /usr/bin/unshare
me@myhost:~$ unshare -r
unshare: cannot open /proc/self/setgroups: Permission denied
me@myhost:~$ sudo setcap cap_sys_admin= /usr/bin/unshare
me@myhost:~$ unshare -r
root@myhost:~#
顺便说一句:我正在运行内核版本为 4.4 的 Ubuntu 16.04.4 LTS,而 util-linux(包括unshare
)的版本是 2.27.1。