
Я использую 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, чтобы разрешить владельцу и группе читать, писать и выполнять
Затем вам придется настроить Exim4
PHP-скрипт для запуска от имени «eximappuser» вместо «nobody».