Я хочу работать, crontab управляют каждыми 5 минутами, который выполняет py сценарий. py внутренний изгиб сценария генерирует файл журнала с полуночным вращением в dir журналов/var/www/logs/.The, имеет 777 разрешений.
Файл журнала имеет полуночное вращение и когда новый файл создается, это создает как корневой владелец. Как удостовериться, что владение остается как www-данные, как некоторые другие сценарии также пишут в тот же файл, и имеющий корневое владение вызывает проблему разрешения для других сценариев.
Один путь состоит в том, чтобы вставить команду,
crontab-u www-данные-e
Это хорошо работает, но я хочу поддержать все свои команды крона при пользователе root.
Я пытался делать то же с sudo, но это создает с корнем как владелец, который не, что я хочу.
Больше обходное решение, но Вы могли также позволить своему сценарию работать как root
как это, и позвольте файлу, который будет создан root
. И, чем просто добавляют в конце
&& sudo chown www-data <your Log file>
наконец передать владение файла к www-data
.
(Если существует больше файлов, чем Вы, вероятно, также интересуетесь -R
флаг для "рекурсивного" для выполнения показанный на всей папке и это довольно),
Таким образом, Вы хотите иметь
Так как su не доступен для www-данных, как обсуждено в комментариях, можно использовать sudo вместо этого, если это доступно в системе. Из страницы справочника это говорит
sudo, sudoedit — выполните команду как другого пользователя
В Вашем случае это означало бы, что Вы используете
sudo crontab -e
отредактировать Ваш crontab как пользовательский корень. Внутри crontab предварительно ожидают sudo -u www-data python
команда для выполнения python
пользователь рекламы www-data
.
*/5 * * * * sudo -u www-data python /my/python/log/script.py
Я хочу поддержать все свои команды крона при пользователе root.
Поддержать все cron
задания (который может быть выполнен как различные пользователи) в одном месте, забудьте crontab
управляйте и отредактируйте crontab в масштабе всей системы в файле /etc/crontab
вместо этого, или добавьте свой собственный crontab к каталогу /etc/cron.d
. Как Вы ожидали, это потребует корневого доступа.
Эти файлы очень напоминают любой другой crontabs, но они включают столбец имени пользователя, таким образом, Вы можете просто указать целевого пользователя и не должны использовать sudo
или такие вещи.
Следует иметь в виду это в отличие от команды crontab
, Вы непосредственно редактируете файлы конфигурации системы, таким образом, Ваши изменения не будут проверены после выхода из редактора. Поэтому отредактируйте их с достаточным вниманием.