ネットワーク経由でUnixソケットにアクセスできますか?

ネットワーク経由でUnixソケットにアクセスできますか?

文書LinuxサンドボックスアプリケーションFirejailは言います。

X11を扱うたびに、新しいネットワークネームスペースもインストールする必要があります。これは、すでにコンピュータで実行されているプラ​​イマリX11サーバーで開かれた抽象Unixソケットへのアクセスを防ぐ唯一の方法です。

これは、ネットワークインタフェースを介してのみUnixソケットに接続できることを示しています。つまり、実際にはファイルシステムでファイルとして開くことはできません。私にとっては、これは奇妙に見えます。これは、Unixドメインソケットをファイルとしてライセンスする目的を完全に無効にしませんか?ファイルシステムにアクセスせずにXサーバーのソケットにアクセスすることは本当に可能ですか?

答え1

...アクセスをブロック抽象的なUnixソケット

通常のUNIXソケットと抽象ソケットには違いがあります。汎用UNIXソケットはファイルシステムのパスにバインドされ、そのパスのアクセス権はソケットのアクセス権を定義します。

対照的に、抽象UNIXソケットはファイルシステムとは無関係です。これらのソケットのアドレスは独自のスペースにあり、ローカルコンピュータの他のプロセスからアクセスできますが、コンピュータの外部からはアクセスできません。

答え2

実際の質問に回答します(Googleは回答を検索すると、X11コメントではなく質問のタイトルにリンクを提供します)。

はい - ネットワーク経由でUNIXソケットファイルにアクセスできます。パッケージマネージャを使用して簡単にインストールでき、ほとんどすべての一般的なディストリビューション(apt-get install socat / yum install socat)で利用できる socat というツールを使用する必要があります。

その後、サーバーにリスナーを作成する必要があります。

socat TCP-LISTEN:6644,reuseaddr,fork UNIX-CONNECT:/path/to/socket/file

クライアントでは、次のコマンドを使用してソケットファイルを生成する必要があります。

socat UNIX-LISTEN:/tmp/remote_socket,fork,reuseaddr,unlink-early,user=file_owner,group=file_group,mode=770 TCP:1.2.3.4:6644

これにより、ポート6644を使用してネットワーク経由でホスト1.2.3.4のソケットファイルにアクセスできます。新しいソケットファイルremote_socketがクライアントに作成されます。このソケットファイルから書き込んだり読んだりすると、実際にネットワークを使ってリモートサーバー上のソケットファイルと通信することになります。

関連情報