it-swarm.com.de

Können Symlinks in /etc/cron.d/ verwendet werden?

Ich versuche, einen Konfigurationsmechanismus zu implementieren, der es in einem bestimmten Projekt ermöglicht, über svn eine Cron-Konfiguration bereitzustellen.

Ich dachte sofort, dass ich Symlinks von /etc/cron.d/ auf die Cron-Datei meines Projekts erstellen sollte (die wiederum von einem VCS gesteuert wird), aber das scheint nicht zu funktionieren.

Ich fand einige alte Forumsnachrichten, die darauf hinwiesen, dass Symlinks nicht unterstützt wurden, und andere, die dies sagten. Welches ist es?

Gibt es noch etwas oder einen anderen guten Weg, um dies zu erreichen?

25
Luís Faceira

Nach man crond

HÖHLEN

Alle crontab-Dateien müssen reguläre Dateien oder Symlinks zu regulären Dateien sein. Sie dürfen nur für den Eigentümer ausführbar oder beschreibbar sein. Diese Anforderung kann mit der Option -p in der crond-Befehlszeile überschrieben werden. Wenn inotify support verwendet wird, werden Änderungen in den symbolisch verknüpften crontabs vom cron-Daemon nicht automatisch bemerkt. Der Cron-Daemon muss ein SIGHUP-Signal empfangen, um die Crontabs neu zu laden. Dies ist eine Einschränkung der inotify-API.

Die Syslog-Ausgabe wird anstelle von Mail verwendet, wenn sendmail nicht installiert ist.

Es hat mich auch geärgert. Kurz gesagt: Ja, Sie können Symlinks verwenden, aber wenn kein regular files or symlinks to a regular file vorhanden ist, muss der Schalter -p verwendet werden.

27
whoami

Dies hat Auswirkungen auf die Sicherheit. Die Skripte in /etc/cron.d/ werden von root mit root-Rechten ausgeführt. Es ist eine schlechte Idee, dort Skripte zu verknüpfen, die sich im Besitz von und beschreibbar für Nicht-Root-Benutzer befinden, da Ihr System auf diese Weise kompromittiert werden könnte

14
Florian Heinle

Ich würde die Cron-Manpage für Ihre Ubuntu-Version überprüfen (ich gehe davon aus, dass wir in diesem Forum über Ubuntu sprechen!):

Dateien in diesem Verzeichnis müssen Eigentum von root sein, müssen nicht ausführbar sein (es handelt sich um Konfigurationsdateien, genau wie/etc/crontab) und müssen der gleichen Namenskonvention entsprechen, wie sie von run-parts (8) verwendet wird: sie müssen bestehen ausschließlich aus Groß- und Kleinbuchstaben, Ziffern, Unterstrichen und Bindestrichen. Dies bedeutet, dass sie keine Punkte enthalten können.

Wie Florian betont, handelt es sich bei dieser Datei, die von Nicht-Root-Benutzern geschrieben werden kann, um eine Sicherheitslücke, da die Jobs von Root ausgeführt werden (für jeden, der in der Datei als Jobbesitzer angegeben ist). Beachten Sie daher auch, dass

Dieses Verzeichnis kann jede Datei enthalten, die Aufgaben definiert, die dem in/etc/crontab verwendeten Format entsprechen, d. H. Im Gegensatz zum Benutzer-Cron-Spool müssen diese Dateien den Benutzernamen enthalten, mit dem die Aufgabe wie in der Aufgabendefinition ausgeführt wird.

d.h. geben Sie den Benutzernamen vor dem auszuführenden Befehl ein.

4
spume