MacOSにはLinuxに対応するオペレーティングシステムがありますか?共有キャンセル(2)?
どちらのシステムでも、次の操作が失敗したいと思います。
#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;
}
答え1
sandbox_init()
Mac OSよりマニュアルページ説明を得るには。
あなたが説明するのと同様のユースケースをサポートしているように見える2つの組み込みプロファイルがあります。kSBXProfileNoInternet
ここでは TCP/IP ネットワーキングが禁止され、kSBXProfileNoNetwork
ここではすべてのソケットベースのネットワーキングが禁止されます。 (後者はここではLinuxネットワークネームスペースの機能に近いですが、前者はユーザーのニーズには十分かもしれません。)
この機能は次のように文書化されています。廃止、アプリケーションをサンドボックスしたい人は見てください。アプリケーションサンドボックス機能だから、みなさんも確認してみるのがいいようです。アプリケーションサンドボックスが同じメカニズム(プラットフォームで実行するコード)を使用していることを知らなかった#ifdef
ので、sandbox_init()
最初にこれを提案しました。