Можно ли использовать символические ссылки в /etc/cron.d/?
Я пытаюсь реализовать механизм конфигурации, который позволяет в определенном проекте развертывать через SVN конфигурации Cron.
Я сразу же подумал, что мне нужно вэрализовать символические ссылки из /etc/cron.d/ в файл cron моего проекта (который, в свою очередь, контролируется vcs), но это, похоже, не работает.
Я нашел несколько старых сообщений на форуме, в которых говорилось, что символические ссылки не поддерживаются, а другие говорят, что они есть. Что он?
Есть ли что-нибудь еще или какой-нибудь другой хороший способ достичь этого?
3 ответа
В соответствии с man crond
ПРЕДОСТЕРЕЖЕНИЯ
Все файлы crontab должны быть обычными файлами или символическими ссылками на обычные файлы, они не должны быть исполняемыми или записываемыми для кого-либо, кроме владельца. Это требование может быть отменено с помощью параметра -p в командной строке crond. Если используется поддержка initify, изменения в символьных crontabs автоматически не замечаются демоном cron. Демон cron должен получить сигнал SIGHUP для перезагрузки crontabs. Это ограничение API inotify.
Вывод системного журнала будет использоваться вместо почты, когда sendmail не установлен.
Это раздражало и живое дерьмо из меня, Короче говоря, да, но вы можете использовать символические ссылки, если не regular files or symlinks to a regular file
он должен использовать -p
переключатель.
Это имеет последствия для безопасности. Сценарии в /etc/cron.d/ запускаются пользователем root с правами root. Это плохая идея - использовать там сценарии символических ссылок, которые принадлежат и доступны для записи пользователям без полномочий root, поскольку ваша система может быть скомпрометирована таким образом.
Я бы проверил man-страницу cron для вашей версии Ubuntu (я полагаю, мы говорим об Ubuntu на этом форуме!):
Файлы в этом каталоге должны принадлежать пользователю root, они не обязательно должны быть исполняемыми (они являются файлами конфигурации, как и /etc/crontab) и должны соответствовать тем же правилам именования, которые используются run-parts(8): они должны состоят только из прописных и строчных букв, цифр, подчеркиваний и дефисов. Это означает, что они не могут содержать никаких точек.
Как отмечает Флориан, если этот файл доступен для записи пользователям без полномочий root, это дыра в безопасности, потому что задания будут выполняться пользователем root (для тех, кто назван в качестве владельца задания в файле). Также обратите внимание, что
Этот каталог может содержать любой файл, определяющий задачи, в соответствии с форматом, используемым в /etc/crontab, то есть, в отличие от пользовательской папки cron, эти файлы должны предоставлять имя пользователя для запуска задачи, как в определении задачи.
т.е. введите имя пользователя перед командой для запуска.