systemd - diretórios e permissões temporários privados

2

Ao configurar diretórios temporários privados, enfrento alguns problemas irritantes. Sempre que o serviço (php-fpm neste caso) parar, o diretório temporário será apagado. Não é exatamente o que eu quero, porque o PHP espera encontrar os diretórios /tmp/sessions e /tmp/uploads no mínimo.

Atualmente, tenho um script que "bootstraps" a criação e as permissões desses diretórios, para que, se eu reiniciar o php-fpm , eu possa recriá-los em um jiff.

No entanto, este script de "criação de diretório" não resolve meus problemas, afinal. PHP reclama sobre "Permissão negada" ao escrever para essas pastas. Mesmo se as permissões estiverem definidas como abertas. Se eu criar manualmente /tmp/test , o PHP não poderá gravar nesse diretório. Se eu criar o diretório a partir do processo php-fpm (por exemplo, através de um pedido HTTP), então o PHP é capaz de escrever lá. Isso faz sentido, que o proprietário do diretório temporário privado (php-fpm), é aquele que pode fazer as operações CRUD lá.

Então, como alguém pode "inicializar" um diretório temporário privado? Seria bom se os diretórios fossem criados pelo próprio systemd, ou php-fpm quando ele fosse iniciado, mas eu não encontrei uma maneira de fazer isso.

Minha última opção é abandonar os diretórios temporários privados, mas isso é algo que realmente não quero fazer.

Alguma opinião?

    
por DavidS 14.01.2016 / 13:21

1 resposta

0

Por ajuda do Aaron , o problema de permissão foi resolvido, definindo o contexto de segurança correto do SELinux. O "bootstrapping" do espaço temporário privado foi resolvido usando um script de pós-inicialização personalizado na configuração systemd ( /etc/systemd/system/php-fpm.service ):

.include /lib/systemd/system/php-fpm.service

[Service]
ExecStartPost=/bin/php -f /opt/www/create_tmp_dirs.php

O próprio script é responsável pela criação de diretórios em /tmp (que é gravado no espaço privado do tmp), definindo permissões e propriedades corretas e, é claro, o contexto de segurança correto.

Quando criei os diretórios manualmente, o contexto de segurança foi definido como user_tmp_t , enquanto o contexto correto deve ser httpd_tmp_t .

    
por 15.01.2016 / 09:12

Tags