我正在玩linux命名空间,我注意到,如果一个用户想在一个新的网络命名空间中执行一个进程(不使用用户命名空间),他需要是根用户或具有CAP_SYS_ADMIN
功能。
unshare(2)管理页面说:
CLONE_NEWNET(自Linux 2.6.24起)
这个标志与clone(2) CLONE_NEWNET标志的效果相同。取消共享网络命名空间,这样调用进程将被移动到一个新的网络命名空间中,该命名空间不与任何先前存在的进程共享。使用CLONE_NEWNET需要CAP_SYS_ADMIN功能。
因此,如果我想在网络沙箱中执行pdf阅读器,我必须使用user-net-namespaces或一些特权包装器。
为什么?新进程将被放置在没有接口的新网络名称空间中,因此它将与实际网络隔离,对吗?非特权非用户网络名称空间会引发哪些问题/安全威胁?
创建网络命名空间允许操作具有setuid标志或其他特权的二进制文件的执行环境。用户名称空间消除了这种可能性,因为进程不能获得用户名称空间中没有包含的特权。
一般来说,不可能知道拒绝特权进程访问网络就不会造成安全漏洞。因此,内核假定操作是特权的,而是否为普通用户提供特权实用程序则由系统策略决定。