Ich versuche, eine Crontab für eine Gruppe von Benutzern zu erstellen. Nennen wir die Gruppe „testGroup“. Es gibt 3 Benutzer und ich möchte allen Zugriff auf dieselbe Crontab gewähren. Ich habe ein wenig recherchiert und versucht, jeden einzelnen Benutzer zur Crontab-Gruppe in der Datei /etc/group hinzuzufügen. Dies hat jedoch nicht funktioniert, da es immer noch 3 separate Crontabs für jeden Benutzer gibt. Kann das behoben werden? Wenn ja, wie würde ich dabei vorgehen?
Danke
Antwort1
Hintergrund
Nein, cron
es funktioniert nicht so, wie Sie annehmen.
Der cron
Daemon liest seine Crontabs von zwei Stellen:
- Systemweit
/etc/crontab
; - Crontabs pro Benutzer.
Es gibt kein Konzept für Crontabs pro Benutzergruppe.
Lösung
Debian hat Anpassungen vorgenommen cron
, die es Ihnen ermöglichen, relativ einfach das zu tun, was Sie brauchen. So zitieren Sie die cron(8)
Handbuchseite:
Darüber hinaus liest in Debian
cron
die Dateien im/etc/cron.d
Verzeichnis. cron behandelt die Dateien in/etc/cron.d
as auf die gleiche Weise wie die/etc/crontab
Datei (sie folgen dem speziellen Format dieser Datei, d. h. sie enthalten das Benutzerfeld). Sie sind jedoch unabhängig von/etc/crontab
: Sie erben beispielsweise keine Umgebungsvariableneinstellungen von . Diese Änderung ist spezifisch für Debian, siehe den Hinweis unterDEBIAN-SPEZIFISCHunten.
Daher würde ich folgendes tun:
Erstellen Sie eine dedizierte Gruppe für Ihre Benutzergruppe. Nehmen wir an, es ist „mycrontab“.
Fügen Sie Ihre drei Benutzer zu dieser Gruppe hinzu.
Erstellen Sie eine Datei unter
/etc/cron.d
und legen Sie fest, dass ihr Eigentümerroot:mycrontab
oder deren Berechtigungsbits auf0660
oder gesetzt sind. Dies bedeutet, dass der Benutzer und die Grupperw-rw-r--
Lese-/Schreibzugriff haben und alle anderen Lesezugriff haben.root
mycrontab
Informieren Sie Ihre Benutzer darüber, wo diese Datei zu finden ist und welche Regeln für ihr Format gelten (diese können in Form von Kommentaren in die Datei eingefügt werden).
Beachten Sie, dass Sie möglicherweise herausfinden müssen, wie Sie das Senden von E-Mails an alle Ihre Benutzer handhaben. Ich würde prüfen, ob es in Ordnung ist, die von MAILTO
befolgte Umgebungsvariable cron
zuerst auf eine durch Kommas getrennte Liste von E-Mail-Adressen zu setzen (wie ), oder, falls das nicht möglich ist, müssten Sie wahrscheinlich entweder in Ihrem lokalen MTA oder dem MTA, der von auf Ihrem System generierte E-Mails empfängt, einen E-Mail-Alias einrichten und den Wert dieses Alias für die Variable verwenden .[email protected],[email protected],[email protected]
cron
MAILTO
Alles in allem sollten Sie die cron(8)
Handbuchseiten crontab(5)
zumindest flüchtig überfliegen.
…und bitte entfernen Sie Ihre Benutzer aus der crontab
Gruppe!
Antwort2
Ich verstehe nicht, warum die Lösung von @kostix es nicht zulässt, Code als Root auszuführen.
Sie erteilen Benutzern im Grunde Root-Crontab-Zugriff. Das ist sehr gefährlich.
Persönlich würde ich ein allgemeines Konto mit den gleichen Rechten wie die Benutzer erstellen und den Benutzern erlauben, sich per su bei diesem Benutzer anzumelden und dessen Crontab zu bearbeiten.