8

我正在使用 linux 命名空间,我注意到如果用户想要在新的网络命名空间(不使用用户命名空间)中执行一个进程,他需要是 root 或有CAP_SYS_ADMIN能力。

unshare(2)联机帮助页说:

CLONE_NEWNET(自 Linux 2.6.24 起)

此标志与 clone(2) CLONE_NEWNET 标志具有相同的效果。取消共享网络命名空间,以便将调用进程移动到一个新的网络命名空间,该命名空间不与任何先前存在的进程共享。使用 CLONE_NEWNET 需要 CAP_SYS_ADMIN 功能。

因此,如果我想在网络沙箱中执行 pdf 阅读器,我必须使用 user-net-namespaces 或一些特权包装器。

为什么?新进程将被放置在没有接口的新网络命名空间中,因此它将与真实网络隔离,对吧?无特权的非用户网络命名空间会引发哪些类型的问题/安全威胁?

4

1 回答 1

0

创建网络命名空间允许操纵具有 setuid 标志或具有其他特权的二进制文件的执行环境。用户命名空间消除了这种可能性,因为进程无法获得未包含在用户命名空间中的权限。

一般来说,不知道拒绝特权进程访问网络不会造成安全漏洞。因此,内核假定操作是特权的,由系统策略决定是否为普通用户提供特权实用程序。

于 2016-12-03T22:10:30.253 回答