Estou usando o Exim4 para executar scripts PHP quando um e-mail é recebido.
Este script deve criar um arquivo na pasta /var/log/myapp se ele não existir, caso contrário, ele deve apenas ler o arquivo e adicionar mais conteúdo ao log.
Fiz alguns testes aplicando a permissão 777 na pasta e vi que o usuário utilizado pelo Exim4 é nobody
.
No entanto, em alguns casos, meu usuário administrativo (por exemplo bob
, ) pode executar manualmente o arquivo PHP por meio do PHP CLI e também usar esses arquivos de log.
Executei os comandos abaixo para adicionar meu usuário e ninguém para gravar na pasta, mas apenas meu usuário pode criar arquivos, mas 'ninguém' não pode.
sudo groupadd eximapplog
sudo usermod -a -G eximapplog bob
sudo usermod -a -G eximapplog nobody
sudo chgrp -R eximapplog /var/log/myapp
sudo chmod g+rwx /var/log/myapp
sudo chmod -R 775 /var/log/myapp
O que eu poderia estar fazendo de errado?
Acho que o erro vem da diferença nos níveis de permissão entre seu usuário (bob) e o usuário "ninguém".
Vamos tentar ajustar o script PHP ou a configuração do Exim4 para que seja executado como um usuário específico não root.
Primeiro criamos novos usuários e um novo grupo.
Em seguida, adicionamos eximappuser e bob ao nosso novo grupo
Mudamos os direitos do proprietário
Em seguida, alteramos os direitos de var/log/myapp para permitir que o proprietário e o grupo leiam, gravem e executem
Então você vai ter que configurar
Exim4
ou o script PHP para rodar como 'eximappuser' ao invés de 'nobody'