Wie führe ich einen Cron-Job als bestimmter Benutzer aus?

14

Ich habe ein paar Befehle, die ausgeführt werden sollen, nachdem die Maschine hochgefahren ist. Ein Benutzer sollte sich nicht anmelden müssen, um ausgeführt zu werden.

Ich fand diese großartige Antwort, die crontab mit dem @rebootSchlüsselwort vorschlägt , jedoch als root ausgeführt wird, und ich möchte als ein bestimmter Benutzer ausgeführt werden, der für diese "Dienste" erstellt wurde (keine tatsächlichen Systemdienste).

Was sind die Voraussetzungen, um bei einem bestimmten Benutzer den gleichen Effekt zu erzielen?

Louis
quelle
Versuchen Sie, '$ su [Benutzername] [Befehl]'
LittleByBlue

Antworten:

23

Sie könnten eine Crontab für den bestimmten Benutzer erstellen, wie folgt:

crontab -u <username> -e

Oder einfacher gesagt, Sie könnten einfach ausgeführt werden, crontab -ewenn Sie als dieser Benutzer angemeldet sind.

Alternativ können Sie Ihrem Befehl in Ihrer (Root-) crontab das Präfix voranstellen sudo -u <username>, um den Befehl als den angegebenen Benutzer auszuführen.

kraxor
quelle
Danke, ich konnte es damit nicht zum Laufen bringen. Aber jetzt sehe ich, dass ich für jeden eine Crontab erstellen kann. Die Befehle liefen als root mit sudo einwandfrei. Ich wusste nicht, dass ich dort sudo verwenden kann (ich hatte erwartet, dass es nicht klappt, wenn ich auf ein Passwort warte).
Louis
2
@Louis sudobenötigt kein Passwort, wenn Sie es als root aufrufen. Grundsätzlich erhalten Sie keine Berechtigungen, sondern geben sie auf.
Kraxor
1
@ kraxor - Sie können crontab -e einfach ausführen, wenn Sie als dieser Benutzer angemeldet sind. Ich denke, das ist nicht richtig.
BHV