Linux Shell Script als Root ausführen, ohne nach Passwort zu fragen?
Ich möchte ein Shell Script automatisiert mit Cron ausführen. In dem Script sind allerdings Commands enthalten, welche als Root laufen müssen. Nun wird das Script nicht korrekt automatisch ausgeführt, da ich ja jedes mal ein Passwort eingeben muss, wenn ich einen Command als Root ausführen möchte.
Ich habe schon in der sudoers Datei folgende Zeile eingefügt (Username natürlich mit meinem Benutzernamen ersetzt)
Username ALL = NOPASSWD: /home/username/test.sh
Die Zeile habe ich ganz unten eingefügt.
Nun kann ich das Shell Script ohne Passwort ausführen, wenn ich "sudo ./test.sh" eingebe. Wenn ich das Script allerdings ohne dem sudo Befehl am Anfang starte, da sudo ja in dem Shell Script enthalten ist, frägt es mich nach einem Passwort.
Wie bekomme ich es hin, dass ich nicht nach einem Passwort gefragt werde, wenn ein "sudo" befehl im Script ausgeführt wird?
1 Antwort
Viele Wege führe nach Rom
Die brutale Methode: Du erlaubst in der Sudoers-Datei alle Befehle ohne Passwort auszuführen.
Etwas eleganter: Du lässt root den Cronjob ausführen:
sudo crontab -e
oder alternativ kannst du eine eigene crontab z.B. unter /etc/cron.d/ anlegen, in der du den ausführenden Benutzer angibst. (zwischen den Zeitangaben und dem Befehl)
oder, die sichere Version von Variante 1: Du legst einen Phantomnutzer an, der sich nicht einloggen darf, trägst den in die Sudoers mit NOPASSWD:ALL ein und lässt den dann den Cronbefehl handlen.
Wie ist das mit systemd-timern? Laufen die nicht eh als root? Hab ich grad nicht im Kopf.
4. Variante: schauen, welche Befehle im Script mit sudo aufgerufen werden und diese zusätzlich in die sudoers eintragen.
Üblicherweise lässt man aber cron das Script als root ausführen.