Правильный способ реализации графика / cron

1

Мне нужно добавить создание массивных объектов в Pimcore. Сначала я пробовал с помощью Интернета, но из-за большого размера набора, запрос, взятый долгое время, и подход отброшен на практике.

Затем я выбрал cron для расписания работы на более поздний период, но у меня другая проблема. Как и некоторые другие приложения RAD, pimcore автоматически генерирует некоторый код в некоторых папках, таких как /website/var/versions. Таким образом, эти папки автоматически получают разрешение веб-пользователя (в моем случае apache пользователь).

Но мой скрипт cron, выполняемый обычным пользователем, который выполняет API Pimcore, вызывает создание объектов/данных, но не может писать в папках из-за недостаточных разрешений. Теперь у меня может быть один из двух вариантов.

  1. Запуск cron через пользователя apache, который не является большим по соображениям безопасности.
  2. Дайте права на запись (chmod 777 вроде или добавьте моего пользователя в группу apache с помощью chown). Но pimcore создает новые папки время от времени, когда управляется из браузера. Таким образом, у этих новых папок нет разрешений на запись cron-скриптом (разрешение max 755, я получаю для новых папок, которых недостаточно для групповой записи).

Я искал ранее в google и нашел команду setfacl для установки по умолчанию пользователя/разрешений для папки. Что я использовал так.

    'sudo setfacl -Rm u:apache:rwx,d:u:apache:rwx website/var/versions/object' 

Но это не удалось, и мне нужно снова и снова разрешать вручную.

Теперь, если какой-либо практический подход для этого?

Примечание. В настоящее время я использую Amazon Linux AMI. Но это может быть позже изменено на redhat или ubuntu, поэтому лучше всего доступно универсальное решение linux.

  • 0
    «Запустите cron через пользователя Apache, что по соображениям безопасности не очень». - Мне любопытно, почему ты так думаешь?
  • 0
    @chluehr, мы уже видели практический пример взлома системы через Apache Cron на загруженном сайте. Этого достаточно для системных администраторов, чтобы отключить Apache Cron.
Показать ещё 5 комментариев
Теги:
cron
pimcore
user-permissions

1 ответ

2

Pimcore уже требует, чтобы его задания на обслуживание (cron) выполнялись под пользователем apache, поэтому не выполняйте свою работу под пользователем apache, возможно, не сильно улучшить ситуацию.

Но вы можете пойти с подходом, который используется для отправки интегрированной рассылки.

См. /Pimcore/modules/reports/controllers/NewsletterController.php:194:

$cmd = Tool\Console::getPhpCli() . " " . realpath(PIMCORE_PATH . DIRECTORY_SEPARATOR . "cli" . DIRECTORY_SEPARATOR . "send-newsletter.php"). " " . escapeshellarg($letter->getName()) . " " . escapeshellarg(Tool::getHostUrl());
            Tool\Console::execInBackground($cmd, PIMCORE_LOG_DIRECTORY . "/newsletter--" . $letter->getName() . ".log");

Над кодом запускается сценарий CLI /pimcore/cli/send-newsletter.php

При таком подходе cron не нужен, и поскольку задание выполняется как CLI, он не будет тайм-аут (если вы явно не задали тайм-аут для PHP CLI).

  • 0
    Если этот сценарий запускается CLI, он все равно должен иметь пользователя, у которого не будет разрешения на запись в папки версий, которые имеют разрешение только для пользователя apache. Я прав?
  • 0
    Нет, он будет работать под пользователем Apache, поэтому он должен иметь все необходимые вам права. Команда PHPs shell_exec запускает сценарии CLI под текущим пользователем - поэтому, если вы запускаете его из действия контроллера, он запускается вашим пользователем Apache.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню