PrivateTmpがtrueになるようにソケットをどこに置く必要がありますか?

PrivateTmpがtrueになるようにソケットをどこに置く必要がありますか?

httpd他のサービス(含む)と通信する必要があるC ++プログラムがあります。/tmp

systemdそして設定が適用されると、PrivateTmp=truehttpdのようなプロセスはデフォルトで私のプログラムのソケットを見ることができません。これは良い保護なPrivateTmpので、ユーザーは設定を変更したくありません。httpd

しかし、他のプロセスと共有できるように(サービスの起動/停止時に作成/削除される)ソケットファイルをどこに配置する必要がありますか?

(またはユーザーに閉じるように指示する唯一の/正しいソリューションですかPrivateTmp?)

答え1

/var/tmp固定ビット(たとえば)を使用して、ソケットを誰でも書き込むことができるディレクトリに配置できます/tmp

プログラムがsystemdによって開始されたデーモンの場合は、ユニットファイルで使用することを検討できます。これにより、このディレクトリはRuntimeDirectory=somedirユニットの起動時に作成され、ユニットが停止すると削除されます。/runその後、.NETでソケットを作成できます/run/somedir/

関連情報