Моя ЛАМПА настроена на работу, user:www-data
и все файлы и папки создаются с такими разрешениями.
У меня есть настройки для crontab как user @ ubuntu.
Так что я делаю crontab -e
и использую эту команду:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
По сути, эта команда просто создает файл кэша в указанном месте (без проблем), но этот файл кэша создается с пользователем: разрешения пользователя, а не user:www-data
разрешения.
Как я могу сделать так, чтобы он по умолчанию создавал файл с user:www-data
разрешениями?
Я не могу пойти и chown
каждый раз, когда файл воссоздается.
Спасибо.
awstats
илиphp5
sessionclean), расположены в/etc/cron.*
каталогах и, следовательно, не видны сквозьcrontab -e
(даже при указании пользовательских www-данных ).Ответы:
Вы можете записать свою запись в системный crontab
/etc/crontab
, который принимает дополнительный аргумент, определяющий пользователя для запуска (обычно root, но может быть www-data).Ваша строка станет:
Или вы можете отредактировать crontab пользовательских www-данных с помощью
su
:источник
/etc/cron.d
с описательным именем, например ,/etc/cron.d/artisan
.sudo su -c "crontab -e" www-data -s /bin/bash
Вы также можете запустить crontab с
-u
аргументом для редактирования crontab для конкретного пользователя:источник
Для запуска crontab от имени пользователя www-data вы можете использовать следующую команду:
Затем вы пишете строку, например, чтобы запускать php-файл каждые 15 минут:
При сохранении, вас спросит редактор:
Сохрани его там, не беспокойся.
crontab -e
открывает файл в / tmp вместо фактического crontab, чтобы он мог проверить ваш новый crontab на наличие ошибок и не дать вам перезаписать ваш реальный crontab с этими ошибками. Если ошибок нет, то ваш текущий crontab будет обновлен. Если crontab -e просто пишет прямо в ваш настоящий crontab, то вы рискуете уничтожить весь ваш crontab.Чтобы убедиться, что ваш cronjob работает, вы можете проверить логи cron. обычно в /var/log/cron.log или выполняя следующую команду:
источник
Я хотел бы добавить другой подход. Как упоминали другие люди, Ubuntu (16.04 здесь) и crontab www-data, похоже, ненадежны (возможно, это вопрос безопасности?).
Как бы то ни было, в нашей компании нам нравится, чтобы все cronjobs на сервере были легко доступны, поэтому вы ничего не пропустите. В то же время мы не хотим запускать все (что угодно!) Как root.
Поэтому мы бежим
Как вы обычно делаете, а затем мы указываем команду как
Это будет выполнять / path / to / command как www-data, сохраняя cronjob в корневом файле cronjobs (и это всегда будет работать правильно). Преимущество заключается в том, что вы можете записывать файлы журналов как root (для максимальной безопасности), используя каналы.
Обратите внимание, что мы передаем нашу предпочтительную оболочку, это может быть также / bin / sh для более простой оболочки (нам просто нравятся полные возможности bash). В Www-data не указана оболочка, поэтому вы получите ошибки без нее. Обычно cron запускает задания только с / bin / sh.
источник