
Estoy usando Exim4 para ejecutar scripts PHP cuando recibo un correo electrónico.
Este script debería crear un archivo en la carpeta /var/log/myapp si no existe; de lo contrario, debería simplemente leer el archivo y agregar más contenido al registro.
Realicé algunas pruebas aplicando el permiso 777 en la carpeta y vi que el usuario utilizado por Exim4 es nobody
.
Sin embargo, en algunos casos mi usuario administrativo (p. ej. bob
) puede ejecutar manualmente el archivo PHP a través de la CLI de PHP y también utilizar estos archivos de registro.
Ejecuté los siguientes comandos para agregar mi usuario y nadie para escribir en la carpeta, pero solo mi usuario puede crear archivos, pero "nadie" no puede.
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
¿Qué podría estar haciendo mal?
Respuesta1
Creo que el error proviene de la diferencia en los niveles de permiso entre su usuario (bob) y el usuario "nadie".
Intentemos ajustar el script PHP o la configuración de Exim4 para que se ejecute como un usuario específico no root.
Primero creamos nuevos usuarios y nuevos grupos.
sudo adduser eximappuser
sudo groupadd eximappgroup
Luego agregamos eximappuser y bob a nuestro nuevo grupo.
sudo usermod -a -G eximappgroup eximappuser
sudo usermod -a -G eximappgroup bob
Cambiamos los derechos del propietario.
sudo chown -R eximappuser:eximappgroup /var/log/myapp
Luego cambiamos los derechos de var/log/myapp para permitir que el propietario y el grupo lean, escriban y ejecuten.
Luego tendrás que configurar Exim4
el script PHP para que se ejecute como 'eximappuser' en lugar de 'nadie'.