Ich habe nur wenige Crontab-Jobs, die unter root ausgeführt werden, aber das gibt mir einige Probleme. Beispielsweise befinden sich alle Ordner, die während dieses Cron-Jobs erstellt wurden, im Benutzerstamm und im Gruppenstamm. Wie kann ich es schaffen, unter Benutzer-WWW-Daten zu laufen und WWW-Daten zu gruppieren, damit ich beim Ausführen von Skripten von meiner Website aus diese Ordner und Dateien bearbeiten kann?
Mein Server läuft unter Ubuntu.
Aktueller Crontab-Job ist:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
crontab -e
als bestimmter Benutzer verwenden.cron
Auf * nix-Systemen muss sich kein Benutzer anmelden, um die in der Crontab eines bestimmten Benutzers angegebenen Jobs ausführen zu können.BEARBEITEN: Beachten Sie, dass diese Methode nicht mit crontab -e funktioniert, sondern nur, wenn Sie / etc / crontab direkt bearbeiten. Andernfalls erhalten Sie möglicherweise eine Fehlermeldung wie
/bin/sh: www-data: command not found
Kurz vor dem Programmnamen:
quelle
crontab -e
, sondern nur, wenn Sie/etc/crontab
direkt bearbeiten . Lesen Sie den Kommentar oben in dieser Datei, um weitere Informationen zu erhalten.sudo crontab -e
, sehe ich die Jobs. Aber ich öffne die Datei,/etc/crontab
es gibt keine Jobs. Ist das komisch Auch wenn ichsudo crontab -e
und einen Job mit benutzerdefinierten hinzufügen, wird es funktionieren?Da Sie Ubuntu ausführen, befindet sich Ihr System crontab unter
/etc/crontab
.Als Root-Benutzer (oder mit sudo) können Sie diese Datei einfach bearbeiten und den Benutzer angeben, der diesen Befehl ausführen soll. Hier ist das Format der Einträge in der System-Crontab und wie Sie Ihren Befehl eingeben sollten:
Natürlich sollten die Berechtigungen für Ihr PHP-Skript und Ihre Protokolldatei so festgelegt werden, dass der
www-data
Benutzer Zugriff darauf hat.quelle
crontab -e
; aber nicht.Sie können auch versuchen,
runuser
(als root) einen Befehl als anderer Benutzer auszuführenSiehe auch:
man runuser
quelle
runuser
ist nicht in Ubuntu enthalten.Mikes Vorschlag klingt nach dem "richtigen Weg". Ich bin auf diesen Thread gestoßen, der den Benutzer angeben
vncserver
wollte, unter dem er beim Neustart ausgeführt werden soll, und alle meine Cron-Jobs an einem Ort behalten wollte.Ich habe den folgenden Fehler für das VNC-Cron erhalten:
In meinem Fall konnte ich
sudo
angeben, als wen die Aufgabe ausgeführt werden soll.quelle
sudo: sorry, you must have a tty to run sudo