Permitir a los usuarios crear y escribir en una carpeta de registro

Permitir a los usuarios crear y escribir en una carpeta de registro

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 Exim4el script PHP para que se ejecute como 'eximappuser' en lugar de 'nadie'.

información relacionada