
Estou usando o Exim4 para executar scripts PHP quando um email é recebido.
Este script deve criar um arquivo na pasta /var/log/myapp se ele não existir, caso contrário, deverá apenas ler o arquivo e adicionar mais conteúdo ao log.
Realizei 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 através da CLI do PHP 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?
Responder1
Acho que o erro vem da diferença nos níveis de permissão entre o seu usuário (bob) e o usuário "ninguém".
Vamos tentar ajustar o script PHP ou a configuração do Exim4 para que ele seja executado como um usuário específico não root.
Primeiro criamos novos usuários e um novo grupo.
sudo adduser eximappuser
sudo groupadd eximappgroup
Então adicionamos eximappuser e bob ao nosso novo grupo
sudo usermod -a -G eximappgroup eximappuser
sudo usermod -a -G eximappgroup bob
Nós alteramos os direitos do proprietário
sudo chown -R eximappuser:eximappgroup /var/log/myapp
Em seguida, alteramos os direitos de var/log/myapp para permitir que o proprietário e o grupo leiam, escrevam e executem
Então você terá que configurar Exim4
o script PHP para rodar como 'eximappuser' em vez de 'nobody'