httpd
다른 서비스(포함)와 통신 해야 하는 C++ 프로그램이 있습니다./tmp
systemd
및 설정이 적용되면 PrivateTmp=true
httpd와 같은 프로세스는 더 이상 기본적으로 내 프로그램의 소켓을 볼 수 없습니다. 이것이 좋은 보호이기 PrivateTmp
때문에 사용자가 설정을 변경하는 것을 원하지 않습니다 .httpd
그런데 다른 프로세스와 공유할 수 있도록 (서비스 시작/중지 시 생성/삭제되는) 소켓 파일을 어디에 넣어야 할까요?
(또는 사용자에게 닫으라고 알리는 유일한/올바른 솔루션입니까 PrivateTmp
??)
답변1
/var/tmp
고정 비트(예: )를 사용하여 소켓을 누구나 쓸 수 있는 디렉토리에 넣을 수 있습니다 /tmp
.
프로그램이 systemd에 의해 시작된 데몬인 경우 유닛 파일에서 사용하는 것을 고려할 수 있습니다. 그러면 이 디렉터리는 RuntimeDirectory=somedir
유닛이 시작될 때 생성되고 유닛이 중지되면 삭제됩니다. /run
그런 다음 .NET에서 소켓을 만들 수 있습니다 /run/somedir/
.