У меня есть задание cron, которое запускает скрипт PHP и создает файлы (изображения). Но задание cron выполняется как меня (будучи меня мое собственное имя пользователя), а не apache, никто, httpd, www ... и все созданные файлы принадлежат этому пользователю.
Если я запускаю тот же сценарий через браузер, он запускается как apache. Я тестировал это с whoami
и проверил права доступа к файлу.
Проблема в том, что если я разработаю веб-интерфейс для удаления файлов (именно так пользователи / администратор смогут управлять изображениями), он будет работать как apache и не сможет удалить файлы, как apache. не владелец и не принадлежит к той же группе, что и меня.
Как правильно с этим справиться?
Лучше всего запустить задание cron от имени пользователя apache:
sudo crontab -u apache_user -e
Это более чистое решение по сравнению с выполнением задания как ты, потому что то, что принадлежит apache, должно оставаться таким. Смешивание пользователей приведет к беспорядку и в какой-то момент может вызвать проблемы.
Есть разные решения:
www-data
, nobody
, или как он там называется в вашей системе. Вам также необходимо предоставить группе разрешение на запись.sudo su apache_user -c "crontab -e"
. Однако это может не сработать в зависимости от того, разрешено ли переключаться на пользователя apache и добавлять задания cron для apache_user
.Я думаю, что пункт 1 должен быть лучше.