Cron, wa-cache и права доступа

Всем добрый день!

Помогите пожалуйста с проблемой с правами доступа. Я уже ничего не могу придумать (

Скрипты магазина пишут файлы в папку wa-cache от юзера www-data. В ispmanager при установке магазина был создан пользователь www-root и, соответственно, в его папку был установлен магазин. Крон можно запустить как от его имени, так и от имени root. 

Проблема в следующем - есть ежечасные задания крон, которые выполняются от www-root. Соответственно, при их выполнении в папку wa-cache идет запись файлов от него же. При этом магазин ничего уже в эту же папку записать не может, поэтому какие-то товары становятся недоступны, какие-то уведомления не формируются и не отправляются и т.д. 

Я добавила еще одну задачу cron, которая каждый час в 1ую минуту меняет владельца папки wa-cache на пользователя www-data. Часть проблем (с открытием каких-то страниц) ушла, но вот уведомления клиентам, которые формируются как раз после запуска cron, так отправляться и не хотят (т.к. они формируются в первую минуту, до срабатывания задания по изменении прав папки). Поставить крон на первые секунды часа нет возможности, т.к. в настройках можно указать только минуты.

Можно ли как-нибудь еще победить эти права?

15 ответов

  • 1

    Создайте (скопируйте) задания cron от пользователя www-data и очистите все задачи связанные с www-root.

    • +2
      Ольга Ольга Разработчик 4 декабря 2018 19:25 #

      Подскажите, а как это сделать? В панели ispmanager могу только войти как root и создать задания от него, либо войти от www-root и аналогично создать от него.

      • +1

        root может вообще редактировать любые crontab, хоть свои, хоть чужие. В консоли во всяком случае, не знаю, как в ispmanager

        • +1
          Ольга Ольга Разработчик 4 декабря 2018 21:25 #

          Так, у меня наконец появилась надежда ) Если я удалю все cron-ы в панели и создам их минуя ее, через консоль, то смогу указать пользователя, от которого они должны выполняться?

          • +2

            Да, отредактировать команды cron для пользователя www-data можно в консоли из под root командой

            crontab -e -u www-data

            • +1
              Ольга Ольга Разработчик 4 декабря 2018 23:14 #

              Отключила все кроны в панели, добавила все те же задания для www-data через консоль и похоже, что все работает! 

              По крайней мере по одному заказу вижу, что задание сработало и кеш очистился без танцев с бубном. Завтра проверю по остальным заказам, но на данный момент, очень Вам благодарна! )

  • 2

    Попробуйте зайти в Учётные записи -> Пользователи. Далее выбрать пользователя www-data и выше нажать на пиктограмму "Войти". Должны будете зайти под пользователем www-data. 

    Далее слева зайдите в Главное -> Планировщик и там настройте крон. 

    Естественно, в www-root задания крон удалите. Только не все, а те, которые вызывают проблемы с движком из-за пользователя.

    Отпишитесь, если это решит проблему.

    • +1
      Ольга Ольга Разработчик 4 декабря 2018 20:54 #

      Спасибо, только у меня фактически нет в панели пользователя www-data, в том-то и дело. Поэтому войти в него не могу. А для пользователя www-root так и настраивала.

      Если создавать нового пользователя с таким именем, то панель выдает ошибку, что такой пользователь уже существует, хотя в списке пользователей его нет, только www-root.

      • +1

        И в разделе Администраторы нет?

        https://prnt.sc/lqooti

        • +1
          Ольга Ольга Разработчик 4 декабря 2018 21:00 #

          Нет, там только root, там уже тоже пыталась создать www-data и тоже не дал из-за того, что он якобы существует..

          • +1

            Может Вам наоборот нужно сменить пользователя и группу у всех файлов движка на www-root?

            Делается при помощи команды:

            chown -R www-root:www-root site-catalog

            Только необходимо сначала зайти в директорию, где расположен каталог сайта.

            • +1
              Ольга Ольга Разработчик 4 декабря 2018 21:24 #

              Так если я сменю пользователя, то webasyst все равно будет записывать данные под www-data, только у него это теперь не получится..

              • +1
                Мамаев Александр Мамаев Александр 4 декабря 2018 21:31 #

                Решил аналогичную задачу способом из первого ответа.

                Создайте (скопируйте) задания cron от пользователя www-data и очистите все задачи связанные с www-root.

                Только почему у Вас пользователь www-data. При установке isp 5 создались root и www-root

                Соответсвенно все фаилы от www-root

                • +1
                  Ольга Ольга Разработчик 4 декабря 2018 21:36 #

                  Так в этом вся проблема - все файлы (система + те, что я загружаю по ftp для сайта) от www-root, а все, что так или иначе связано с webasyst (все папки wa- и все файлы в них) - www-data.

  • 1
    Руслан 24 октября 2019 16:33 #

    Спасибо ребята! Нам тоже помогло )

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите