O valor PrivateTmp deve estar na parte [Service] da unidade.
Eu encontrei um pequeno problema com o systemd. Eu tenho um serviço php-fpm em execução, que tem PrivateTmp diretiva definida como true .
Existe um cronjob agora que deve obter alguns arquivos do diretório tmp do serviço php-fpm. No entanto, como os arquivos tmp estão localizados em /tmp/systemd-private-<something> , o script do cronjob não pode encontrar os arquivos, pois eles estão no PrivateTmp dir do serviço php-fpm.
Como solução, criei uma unidade systemd, que tem uma diretiva JoinsNamespacesOf definida para o serviço PHP-fpm. Conforme indicado pela documentação do systemd, ela também tem uma diretiva PrivateTmp=true . No final, isso deve ser executado a partir de .timer unit, mas, por enquanto, eu apenas inicio manualmente.
Para ver se está funcionando, eu executei /bin/ls /tmp da minha própria unidade systemd, assumindo que ele mostraria o conteúdo do diretório tmp-particular do serviço PHP-fpm. Infelizmente, ele apenas mostrou o conteúdo do / tmp no sistema de arquivos raiz.
Eu tentei executar vários scripts PHP a partir da unidade de serviço para ver se o processo PHP poderia estar ciente do fato de que ele deveria olhar para o diretório PrivateTmp do serviço php-fpm, mas, infelizmente, isso não aconteceu.
Estou fazendo algo completamente errado aqui ou o recurso JoinsNamespaceOf não funciona como anunciado?
Abaixo da minha unidade de sistema:
[Unit]
Description=PrivateTmp test
[Service]
Type=simple
JoinsNamespaceOf=php70-php-fpm.service
PrivateTmp=true
ExecStart=/bin/ls /tmp
Tags systemd