Разрешить пользователям создавать и записывать данные в папку журнала

Разрешить пользователям создавать и записывать данные в папку журнала

Я использую Exim4 для запуска PHP-скриптов при получении электронного письма.

Этот скрипт должен создать файл в папке /var/log/myapp, если он не существует, в противном случае он должен просто прочитать файл и добавить больше содержимого в журнал.

Я провел несколько тестов, применив разрешение 777 к папке, и увидел, что пользователь, используемый Exim4, — nobody.

Однако в некоторых случаях мой администратор (например, bob) может вручную запустить PHP-файл через PHP CLI, а также использовать эти файлы журналов.

Я выполнил команды ниже, чтобы добавить своего пользователя и пользователя nobody для записи в папку, но только мой пользователь может создавать файлы, а «nobody» — нет.

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

Что я могу делать не так?

решение1

Я думаю, что ошибка возникает из-за разницы в уровнях разрешений между вашим пользователем (Боб) и пользователем «никто».

Давайте попробуем настроить PHP-скрипт или конфигурацию Exim4 так, чтобы он запускался от имени определенного пользователя, не являющегося пользователем root.

Сначала мы создаем новых пользователей и новую группу.

sudo adduser eximappuser
sudo groupadd eximappgroup

Затем мы добавляем eximappuser и bob в нашу новую группу.

sudo usermod -a -G eximappgroup eximappuser
sudo usermod -a -G eximappgroup bob

Мы меняем права собственника

sudo chown -R eximappuser:eximappgroup /var/log/myapp

Затем мы меняем права var/log/myapp, чтобы разрешить владельцу и группе читать, писать и выполнять

Затем вам придется настроить Exim4PHP-скрипт для запуска от имени «eximappuser» вместо «nobody».

Связанный контент