MacOSはLinuxのunshare(2)に対応しています。

MacOSはLinuxのunshare(2)に対応しています。

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()最初にこれを提案しました。

関連情報