我有一个 C++ 程序,它必须与其他服务(包括httpd
)通信,并通过套接字进行通信/tmp
systemd
随着和设置的出现PrivateTmp=true
,像 httpd 这样的进程默认不再能看到我的程序的套接字。我不希望用户更改设置PrivateTmp
,httpd
因为这是一个很好的保护。
但是,我应该将套接字文件(在服务启动/停止时创建创建/删除)放在哪里,以便可以与其他进程共享?
(或者是告诉用户关闭的唯一/正确的解决方案PrivateTmp
??)
答案1
您可以将套接字放入/var/tmp
带有粘性位的世界可写目录中,例如/tmp
.
如果您的程序是由 systemd 启动的守护程序,您可以考虑在单元文件中使用,那么该目录将在单元启动时RuntimeDirectory=somedir
创建,并在单元停止时删除。/run
然后您可以在 中创建套接字/run/somedir/
。