Можно ли использовать символические ссылки в /etc/cron.d/?

22

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

Я сразу же сделаю то, что мне нужно сделать, это символические ссылки из /etc/cron.d/ в файл cron моего проекта (который, в свою очередь, управляется vcs), но это, похоже, не работает.

Я нашел несколько старых сообщений форума, ссылающихся на то, что символические ссылки не поддерживаются, а другие говорят, что они есть. Что это?

Есть ли что-нибудь еще или какой-либо другой хороший способ достичь этого?

    
задан Luís Faceira 28.07.2011 в 15:51
источник

3 ответа

25

Согласно man crond

CAVEATS

All crontab files have to be regular files or symlinks to regular files, they must not be executable or writable for anyone else but the owner. This require‐ ment can be overridden by using the -p option on the crond command line. If ino‐ tify support is in use, changes in the symlinked crontabs are not automatically noticed by the cron daemon. The cron daemon must receive a SIGHUP signal to reload the crontabs. This is a limitation of the inotify API.

The syslog output will be used instead of mail, when sendmail is not installed.

Это тоже раздражало меня из жизни, короче говоря, вы можете использовать символические ссылки, если не regular files or symlinks to a regular file , он должен использовать переключатель -p .

    
ответ дан whoami 24.10.2011 в 14:10
14

Это имеет последствия для безопасности. Сценарии в файле /etc/cron.d/ выполняются root с привилегиями root. Это плохая идея, чтобы символические скрипты там, которые принадлежат и доступны для записи для пользователей без полномочий root, поскольку ваша система может быть скомпрометирована таким образом.

    
ответ дан Florian Heinle 28.07.2011 в 16:02
3

Я проверил бы справочную страницу cron для вашей версии Ubuntu (я предполагаю, что мы говорим об Ubuntu на этом форуме!):

Files in this directory have to be owned by root, do not need to be executable (they are configuration files, just like /etc/crontab) and must conform to the same naming convention as used by run-parts(8): they must consist solely of upper- and lower-case letters, digits, underscores, and hyphens. This means that they cannot contain any dots.

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

This directory can contain any file defining tasks following the format used in /etc/crontab, i.e. unlike the user cron spool, these files must provide the username to run the task as in the task definition.

то есть. введите имя пользователя перед выполнением команды.

    
ответ дан spume 18.02.2014 в 10:05