首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MacOS与Linux的unshare对应(2)

MacOS与Linux的unshare对应(2)
EN

Unix & Linux用户
提问于 2019-03-03 00:19:50
回答 1查看 1.4K关注 0票数 3

MacOS是否与Linux的分摊(2)相对应?

我希望在这两种系统上都出现以下故障。

代码语言:javascript
复制
#define _GNU_SOURCE
#include <stdlib.h>
#include <sched.h>
int main()
{
#if __linux__
    if(0>unshare(CLONE_NEWNET)) return EXIT_FAILURE;
#elif __APPLE__
    /*?*/
#endif
    //this should fail on either system
    if(0!=system("curl www.google.com")) return EXIT_FAILURE;
}
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-03-03 05:34:17

Mac实际上并没有像Linux那样的名称空间,但是如果您想阻止网络,看起来您可以使用sandbox_init()来获得类似的效果。有关说明,请参阅手册页

有两个内置配置文件似乎支持类似于您描述的用例:kSBXProfileNoInternet,禁止TCP/IP网络;kSBXProfileNoNetwork,禁止所有基于套接字的网络。(虽然后者可能更接近Linux网络命名空间在这里所做的工作,但前者可能足以满足您的需要。)

请注意,这个函数已被记录为不推荐使用,那些希望对应用程序进行沙箱处理的人应该查看App沙箱功能,因此您可能也想看看这个。我不知道App是否会使用相同的机制(从平台#ifdef运行的代码),这就是为什么我首先建议使用sandbox_init()

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/504030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档