Чи можна використовувати посилання на /etc/cron.d/?


25

Я намагаюся реалізувати механізм конфігурації, який дозволяє в певному проекті розгортати через svn a cron configure.

Я одразу зауважуєш, що те, що я повинен робити, - це складати символьні посилання від /etc/cron.d/ до файлу cron мого проекту (який, в свою чергу, контролюється vcs), але це, здається, не працює.

Я знайшов кілька старих повідомлень форуму, в яких йдеться про те, що символьні посилання не підтримуються, а інші говорять, що вони є. Що це таке?

Чи є ще щось чи інший хороший спосіб досягти цього?

Відповіді:


27

Згідно з man crond

ПЕРЕМОГИ

Усі файли crontab повинні бути звичайними файлами або символьними посиланнями на звичайні файли, вони не повинні бути виконаними або записаними для когось іншого, крім власника. Цю вимогу можна скасувати за допомогою параметра -p у командному рядку crond. Якщо використовується невідповідна підтримка, зміна симпонізованих кронтабів не помічається демоном крона автоматично. Демон-крон повинен отримати сигнал SIGHUP, щоб перезавантажити кронтаби. Це обмеження API inotify.

Вихід syslog буде використовуватися замість пошти, коли sendmail не встановлено.

Це також дратувало живого лайна і від мене. Коротше кажучи, ви можете використовувати символьні посилання, проте якщо не, то regular files or symlinks to a regular fileвін повинен використовувати -pперемикач.


1
Ви також виявите, що файл повинен бути власником користувача cron, для якого виконуються завдання; Наприклад, якщо символьне посилання /etc/cron.d/bobsjobвказує на файл, що належить cron користувача "bob", не вдасться із повідомленням syslog WRONG FILE OWNER (/etc/cron.d/bobsjob).
Крейг Рінгер

@CraigRinger У мене є користувач з ім'ям "www-data", що володіє файлом cron, в даний момент я отримую помилку WRONG FILE OWNER у syslog. Як можна змусити Cron виконувати за допомогою користувацьких "www-data". Я не хочу робити root власний файл.
CMCDragonkai

@CMCDragonkai sudo -u www-data crontab -eта додайте його до crontab користувача www-data. Потім він запуститься як користувач www-data. Не забудьте видалити явний стовпець користувача, оскільки він не існує в кронових вкладках користувачів.
Крейг Рінгер

Чи помістить файл всередину etc/cron.? Я знаходився під враженням, що інструмент "Кронтаб" поставить завдання десь в іншому місці.
CMCDragonkai

@CMCDragonkai Ви праві, дзвінки crontab -e- це не те, що ви хочете в цьому випадку. Я шукаю, але не знайшов способу запустити crontab користувача як некорінного користувача.
ACK_stoverflow

14

Це має наслідки для безпеки. Сценарії в /etc/cron.d/ запускаються корінь з правами root. Дуже погано зазначати, що там існують сценарії, які належать та можуть бути записані для користувачів, які не користуються коренем, оскільки ваша система може бути порушена таким чином


4

Я перевірив сторінку керування вашою версією Ubuntu (я припускаю, що ми говоримо про Ubuntu на цьому форумі!):

Файли в цьому каталозі мають належати root, їх не потрібно виконувати (вони є файлами конфігурації, як / etc / crontab) і повинні відповідати тій самій умові іменування, що і в run-parts (8): вони повинні складаються виключно з малих та малих літер, цифр, підкреслень та дефісів. Це означає, що вони не можуть містити жодних крапок.

Як зазначає Флоріан, якщо цей файл можна записати не-кореневими користувачами, це захисна дірка, оскільки завдання будуть виконуватись під корінь (бо той, хто названий власником роботи у файлі). Отже, зауважте, що

Цей каталог може містити будь-який файл, що визначає завдання, що відповідають формату, що використовується в / etc / crontab, тобто на відміну від котушки cron користувача, ці файли повинні містити ім'я користувача для виконання завдання, як у визначенні завдання.

тобто введіть ім'я користувача перед командою для запуску.


1
Це означає, що вони не можуть містити жодних крапок. зверніть на це увагу. Я мав крапку в назві посилання. Це був винуватець моєї непідвладної роботи для мене. Плюс: сам файл ОБОВ'ЯЗКОВО закінчується CRLF
д-р Джанлуїджі Зейн Занеттіні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.