systemd PrivateTmp / JoinsNamespaceOf

5

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
    
por MWesterink 13.07.2017 / 15:51

1 resposta

3

O valor PrivateTmp deve estar na parte [Service] da unidade.

    
por 13.07.2017 / 16:34

Tags