Canonical не несет ответственности за содержание пакетов, это все, что это значит.
Еще обходной путь, но вы также можете запустить свой скрипт как root, как он есть, и позволить файлу создавать файл root. И только добавьте в конец
&& sudo chown www-data <your Log file>
, чтобы окончательно передать право собственности на файл на www-data.
(Если файлов больше, чем вы, вероятно, также интересуетесь флагом -R для «рекурсивного», чтобы запустить chown на всю папку и содержимое)
Чтобы сохранить все задания cron (которые могут запускаться как разные пользователи) в одном месте, забудьте команду crontab и измените общесистемный crontab в файле /etc/crontab или добавьте ваш собственный crontab в каталог /etc/cron.d. Как вы ожидали, для этого потребуется root-доступ.
Эти файлы похожи на любые другие crontab, но они включают столбец имени пользователя, поэтому вы можете просто указать целевого пользователя и не использовать sudo или такие вещи.
Имейте в виду, что в отличие от команды crontab вы непосредственно редактируете файлы конфигурации системы, поэтому ваши изменения не будут проверяться после выхода из редактора. Поэтому, пожалуйста, отредактируйте их с достаточным вниманием.
Итак, вы хотите, чтобы
все ваши crontabs в одном месте под root выполняли некоторый код python каждые 5 минут, запускаем скрипт с помощью пользователя www-dataПоскольку su недоступен для www-данных, как описано в комментариях, можно использовать sudo вместо этого, если он доступен в системе. С man-страницы это говорит
sudo, sudoedit - выполнить команду как другой пользовательВ вашем случае это будет означать, что вы используете
sudo crontab -e
для редактирования ваш crontab в качестве пользователя root. Внутри команды crontab prepend sudo -u www-data python выполнить python пользователь объявления www-data.
*/5 * * * * sudo -u www-data python /my/python/log/script.py
Еще обходной путь, но вы также можете запустить свой скрипт как root, как он есть, и позволить файлу создавать файл root. И только добавьте в конец
&& sudo chown www-data <your Log file>
, чтобы окончательно передать право собственности на файл на www-data.
(Если файлов больше, чем вы, вероятно, также интересуетесь флагом -R для «рекурсивного», чтобы запустить chown на всю папку и содержимое)
Чтобы сохранить все задания cron (которые могут запускаться как разные пользователи) в одном месте, забудьте команду crontab и измените общесистемный crontab в файле /etc/crontab или добавьте ваш собственный crontab в каталог /etc/cron.d. Как вы ожидали, для этого потребуется root-доступ.
Эти файлы похожи на любые другие crontab, но они включают столбец имени пользователя, поэтому вы можете просто указать целевого пользователя и не использовать sudo или такие вещи.
Имейте в виду, что в отличие от команды crontab вы непосредственно редактируете файлы конфигурации системы, поэтому ваши изменения не будут проверяться после выхода из редактора. Поэтому, пожалуйста, отредактируйте их с достаточным вниманием.
Итак, вы хотите, чтобы
все ваши crontabs в одном месте под root выполняли некоторый код python каждые 5 минут, запускаем скрипт с помощью пользователя www-dataПоскольку su недоступен для www-данных, как описано в комментариях, можно использовать sudo вместо этого, если он доступен в системе. С man-страницы это говорит
sudo, sudoedit - выполнить команду как другой пользовательВ вашем случае это будет означать, что вы используете
sudo crontab -e
для редактирования ваш crontab в качестве пользователя root. Внутри команды crontab prepend sudo -u www-data python выполнить python пользователь объявления www-data.
*/5 * * * * sudo -u www-data python /my/python/log/script.py