Frage von xChonx, 33

Wie heißt der Command wo man in Linux als ein anderer User eine Datei ausführen lassen kann.?

Ich möchte in meinen Crontab eine Datei ausführen lassen. Aber der Server muss als ein anderer User gestartet werden. Wie mache ich das? Habe den Command (su user -C "xxx/xxx/xxx.sh" in Erinnerung. Aber weis nicht mehr genau den Command.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von guenterhalt, Community-Experte für Linux, 18

als Cron-Befehl ist das nicht so einfach und könnte ein Sicherheitsrisiko werden.

Cron startet zur angegebene Zeit, wer aber soll wo das Passwort eingeben?

Das geht nur, wenn man im Befehl das Passwort mit angibt.

echo <User-Passwort> | su <UserName> -c <Befehl + Parameter> 

Das Passwort steht dann im Klartext in der crontab-Datei!!!

Mit ssh dürfte die ganze Sache sicherer werden.

Wenn im Verzeichnis .ssh der User die Dateien
authorized_keys ,id_rsa und id_rsa.pub  entsprechend generiert sind, dann sind keine Passwörter erforderlich.

ssh user@<localhost oder IP-Adresse>  <Befehl + Parameter>

Fremde User, die nicht in ~/.ssh  registriert sind, müssen auch weiterhin das Passwort kennen und eintippen.

 

Antwort
von Isendrak, 1

Optimalerweise solltest du den Conjob in der Crontab des Users eintragen, als der er ausgeführt werden soll.

Dazu verwende den Befehl

su <user> -c 'crontab -e'

Dann trage den Cronjob (z.B.: xxx/xxx/xxx.sh) ohne irgendwelche zusätze wie su/sudo/o.ä. in die Crontab ein, speichern, fertig.

P.S.: Verwende bei Cronjobs bevorzugt absolute statt relativer Pfade, um sicherzugehen, dass auch genau das ausgeführt wird, was ausgeführt werden soll...

Keine passende Antwort gefunden?

Fragen Sie die Community