выполненный crontab как www-данные для создания файла с www-данными как владелец

Я хочу работать, crontab управляют каждыми 5 минутами, который выполняет py сценарий. py внутренний изгиб сценария генерирует файл журнала с полуночным вращением в dir журналов/var/www/logs/.The, имеет 777 разрешений.

Файл журнала имеет полуночное вращение и когда новый файл создается, это создает как корневой владелец. Как удостовериться, что владение остается как www-данные, как некоторые другие сценарии также пишут в тот же файл, и имеющий корневое владение вызывает проблему разрешения для других сценариев.

Один путь состоит в том, чтобы вставить команду,

crontab-u www-данные-e

Это хорошо работает, но я хочу поддержать все свои команды крона при пользователе root.

Я пытался делать то же с sudo, но это создает с корнем как владелец, который не, что я хочу.

2
задан 24 January 2018 в 14:15

3 ответа

Больше обходное решение, но Вы могли также позволить своему сценарию работать как root как это, и позвольте файлу, который будет создан root. И, чем просто добавляют в конце

 && sudo chown www-data <your Log file>

наконец передать владение файла к www-data.

(Если существует больше файлов, чем Вы, вероятно, также интересуетесь -R флаг для "рекурсивного" для выполнения показанный на всей папке и это довольно),

1
ответ дан 2 December 2019 в 02:44

Таким образом, Вы хотите иметь

  • весь Ваш crontabs в одном месте под корнем
  • выполняйте некоторый код Python каждые 5 минут
  • выполните сценарий с пользовательскими www-данными

Так как 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
1
ответ дан 2 December 2019 в 02:44

Я хочу поддержать все свои команды крона при пользователе root.

Поддержать все cron задания (который может быть выполнен как различные пользователи) в одном месте, забудьте crontab управляйте и отредактируйте crontab в масштабе всей системы в файле /etc/crontab вместо этого, или добавьте свой собственный crontab к каталогу /etc/cron.d. Как Вы ожидали, это потребует корневого доступа.

Эти файлы очень напоминают любой другой crontabs, но они включают столбец имени пользователя, таким образом, Вы можете просто указать целевого пользователя и не должны использовать sudo или такие вещи.

Следует иметь в виду это в отличие от команды crontab, Вы непосредственно редактируете файлы конфигурации системы, таким образом, Ваши изменения не будут проверены после выхода из редактора. Поэтому отредактируйте их с достаточным вниманием.

1
ответ дан 2 December 2019 в 02:44

Другие вопросы по тегам:

Похожие вопросы: