Permitir que os usuários criem e gravem em uma pasta de log

Permitir que os usuários criem e gravem em uma pasta de log

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 Exim4o script PHP para rodar como 'eximappuser' em vez de 'nobody'

informação relacionada