it-swarm.com.de

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

Ich möchte einen Cron-Job als bestimmter Benutzer auf meinem Computer ausführen. Wie kann ich den Benutzer angeben, unter dem ein Cron-Job ausgeführt werden soll?.

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

  • Anmeldung am System nicht möglich
  • Haben Sie eingeschränkten Zugriff auf bestimmte Ordner/Dateien
64
morpheous

Angenommen, Sie können sich nicht einfach anmelden und zur crontab dieses Benutzers hinzufügen, fügen Sie eine Datei in /etc/cron.d ein. Es sollte wie ein normaler Cronjob formatiert sein, aber mit einem zusätzlichen Feld. Setzen Sie den Benutzer vor dem auszuführenden Befehl und nach dem Timing. Sie sollten in der Lage sein, bereits Beispiele auf Ihrem System zu finden.

Beispiel:

#<timing>   <user> <command>
11 * * * *  root   /usr/lib/command
75
Daenyth

Als root, um den cron von user1 zu bearbeiten:

crontab -u user1 -e

Sie können Ihren Befehl auch starten mit:

su user1 -c foo bar

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

40
Eric Darchis

Ich habe ein paar Wochen danach gesucht und das hat endlich funktioniert ...

Erstellen Sie Ihr Skript als Benutzer1

ssh [email protected]
nano hourly-event.sh

geben Sie einen Befehl ein

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

mach es ausführbar

chmod 755 hourly-event.sh

bearbeiten Sie die crontab für user1

Sudo crontab -u user1 -e

füge eine Zeile am unteren Rand ein, die auf deine Skripte zeigt.

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

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

warten Sie auf die Wende der Minute

öffne deine neu erstellte yay.txt

nano /home/user1/yay.txt

sie sollten jetzt ein Nano-Fenster mit "YAY it works" als erste und einzige Zeile geöffnet haben, wenn am unteren Rand Ihres Nano-Fensters "New File" (Neue Datei) angezeigt wird

sie können auch Ihren neuen crontab-Eintrag für Benutzer1 unter/var/spool/cron/crontabs/Benutzer1 überprüfen

FRIEDEN

1
user220364

Manchmal möchten Sie vielleicht, dass der Benutzer seine Umgebung lädt, besonders wenn Sie "rbenv", "nvm" wie folgt verwenden:

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

(hier lädt der Befehl source ~/.bash_profile die Ruby- oder Node-Umgebung.