2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

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

Ich möchte einen Cron-Job als einen bestimmten Benutzer auf meinem Rechner ausführen. Wie kann ich den Benutzer angeben, unter dem ein Cron-Job laufen soll?.

Die Cron-Jobs werden auf einem Server (unter Ubuntu 10.0.4) ausgeführt. Die “Benutzer” sind Benutzer, die speziell für die Ausführung bestimmter serverseitiger Aufgaben erstellt wurden. Diese “Benutzer” haben folgende Gemeinsamkeiten:

  • können sich nicht am System anmelden
  • haben eingeschränkten Zugriff auf bestimmte Ordner/Dateien

Antworten (4)

80
80
80
2010-08-02 11:52:46 +0000

Angenommen, Sie können sich nicht einfach anmelden und ihn zur Crontab des Benutzers hinzufügen, legen Sie eine Datei in /etc/cron.d an. Sie sollte wie ein normaler Cronjob formatiert sein, aber mit einem zusätzlichen Feld. Vor dem auszuführenden Befehl und nach der Zeitangabe geben Sie den Benutzer an. Sie sollten bereits Beispiele auf Ihrem System finden können.

Beispiel:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
41
41
41
2010-08-02 11:58:55 +0000

Als root, um den Cron von Benutzer1 zu bearbeiten:

crontab -u user1 -e

Sie können Ihren Befehl auch mit starten:

su user1 -c foo bar

Aber oft reduzieren die Skripte selbst ihren eigenen Zugriff, wenn sie als root gestartet werden.

1
1
1
2013-04-27 16:49:38 +0000

Ich habe schon seit ein paar Wochen danach gesucht und das hat endlich funktioniert…

Erstellen Sie Ihr Skript als Benutzer1

ssh user1@ipaddress
nano hourly-event.sh

geben Sie ein Kommando ein

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

machen Sie es ausführbar

chmod 755 hourly-event.sh

editieren Sie die Crontab für Benutzer1

sudo crontab -u user1 -e

fügen Sie unten eine Zeile ein, die auf Ihr(e) Skript(e) zeigt

# m h dom mon dow command
* * * * * bash ./hourly-event.sh

exit - Änderungen speichern (beim Speichern wird ein /tmp-Verzeichnis angezeigt. .. es ist ok)

warten Sie auf den Minutenwechsel

öffnen Sie Ihre neu erstellte yay.txt

nano /home/user1/yay.txt

Sie sollten nun ein nano-Fenster geöffnet haben mit “YAY it works” als erste und einzige Zeile, wenn unten in Ihrem nano-Fenster “New File” steht… naja… ich weiß nicht

Sie können auch Ihren neu erstellten crontab-Eintrag für user1 überprüfen unter: /var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

Manchmal möchten Sie vielleicht, dass der Benutzer seine Umgebung lädt, besonders wenn Sie “rbenv”, “nvm” verwenden, etwa so:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(hier wird der Befehl source ~/.bash_profile Ihre Ruby- oder Node-Umgebung laden.