У меня есть несколько заданий crontab, которые запускаются под root, но это вызывает у меня некоторые проблемы. Например, все папки, созданные в процессе этого задания cron, находятся под пользователем root и группой root. Как я могу заставить его работать под пользовательскими www-данными и группировать www-данные, чтобы при запуске сценариев с моего веб-сайта я мог манипулировать этими папками и файлами?
Мой сервер работает на Ubuntu.
Текущее задание crontab:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
crontab -e
в качестве конкретного пользователя.cron
в системах * nix пользователю не требуется входить в систему для запуска заданий, указанных в crontab конкретного пользователя.РЕДАКТИРОВАТЬ: обратите внимание, что этот метод не будет работать с crontab -e, но работает, только если вы редактируете / etc / crontab напрямую. В противном случае вы можете получить ошибку вроде
/bin/sh: www-data: command not found
Прямо перед названием программы:
источник
crontab -e
, но работает только при/etc/crontab
непосредственном редактировании . Прочитайте комментарий в верхней части этого файла для получения дополнительной информации.sudo crontab -e
, я вижу работу. Но я открываю файл/etc/crontab
нет рабочих мест. Это странно? Также если яsudo crontab -e
и добавлю работу с указанным пользователем, будет ли она работать?Так как вы используете Ubuntu, ваш системный crontab находится по адресу
/etc/crontab
.Как пользователь root (или с помощью sudo), вы можете просто отредактировать этот файл и указать пользователя, который должен выполнить эту команду. Вот формат записей в системном crontab и как вы должны ввести свою команду:
Конечно, права доступа для вашего php-скрипта и вашего файла журнала должны быть установлены так, чтобы
www-data
пользователь имел к ним доступ.источник
crontab -e
хотя; но нет.Вы также можете попробовать использовать
runuser
(как root) для запуска команды от имени другого пользователя.Смотрите также:
man runuser
источник
runuser
не входит в Ubuntu.Предложение Майка звучит как "правильный путь". Я натолкнулся на эту тему, желая указать пользователя для запуска
vncserver
при перезагрузке, и хотел сохранить все мои задания cron в одном месте.Я получил следующую ошибку для cron VNC:
В моем случае я смог
sudo
указать, кому запускать задачу.источник
sudo: sorry, you must have a tty to run sudo