PrivateTmp가 true가 될 수 있도록 소켓을 어디에 두어야 할까요?

PrivateTmp가 true가 될 수 있도록 소켓을 어디에 두어야 할까요?

httpd다른 서비스(포함)와 통신 해야 하는 C++ 프로그램이 있습니다./tmp

systemd및 설정이 적용되면 PrivateTmp=truehttpd와 같은 프로세스는 더 이상 기본적으로 내 프로그램의 소켓을 볼 수 없습니다. 이것이 좋은 보호이기 PrivateTmp때문에 사용자가 설정을 변경하는 것을 원하지 않습니다 .httpd

그런데 다른 프로세스와 공유할 수 있도록 (서비스 시작/중지 시 생성/삭제되는) 소켓 파일을 어디에 넣어야 할까요?

(또는 사용자에게 닫으라고 알리는 유일한/올바른 솔루션입니까 PrivateTmp??)

답변1

/var/tmp고정 비트(예: )를 사용하여 소켓을 누구나 쓸 수 있는 디렉토리에 넣을 수 있습니다 /tmp.

프로그램이 systemd에 의해 시작된 데몬인 경우 유닛 파일에서 사용하는 것을 고려할 수 있습니다. 그러면 이 디렉터리는 RuntimeDirectory=somedir유닛이 시작될 때 생성되고 유닛이 중지되면 삭제됩니다. /run그런 다음 .NET에서 소켓을 만들 수 있습니다 /run/somedir/.

관련 정보