Antworten:
Ich werde nicht darauf eingehen, wie sehr dies eine schlechte Idee ist. Einfach ausgedrückt, für die Ausführung sudo
in crontab muss Ihr Kennwort irgendwo im Klartext gespeichert werden.
Es ist eine schlechte Idee.
Das Folgende ist die bevorzugte Methode zum Ausführen von Verwaltungsaufgaben über cron. Da Sie nicht wirklich sudo
in die crontab schreiben müssen , wenn Sie die crontab von root ändern.
Führen Sie den folgenden Befehl aus:
sudo crontab -e
Dies öffnet die root
Crontab. sudo
In diesem Kontext ist es nicht erforderlich, Ihren Befehl auszuführen, da er wie gewohnt aufgerufen root
wird.
Daher würden Sie einfach Folgendes an die crontab von root anhängen.
@hourly rm somefile
Wenn Sie jetzt absolut unsicher sein und Risiken mit Ihrem Passwort eingehen möchten, wird der folgende Befehl von Ihrer eigenen crontab ausgeführt und Ihr Passwort automatisch eingegeben, wenn Sie dazu aufgefordert werden sudo
.
Auch dies wird nicht empfohlen .
Schreiben Sie in Ihrer eigenen Crontab Ihren Befehl wie folgt:
@hourly echo "password" | sudo -S rm somefile
Der offensichtliche Nachteil hierbei ist, dass Ihr Passwort im Klartext lesbar ist, sollte jemals jemand auf Ihre crontab zugreifen.
Das solltest du nicht tun.
root
Benutzer-Crontab anstelle der systemweiten Crontab verwendet werden /etc/crontab
?
sudoers
Datei verfügbaren Feinheiten , wie Sudo-Gruppen ohne Kennwortanforderung, überschreibt .
Wenn Sie das Skript aus einem der cron-Verzeichnisse ( /etc/cron.*
) einfügen, müssen Sie sudo nicht verwenden, da dieses als root ausgeführt wird.
Wenn Sie crontab verwenden, sollten Sie die crontab von root verwenden. Dies wird als root ausgeführt und benötigt auch kein sudo.
sudo crontab -e
Führen Sie den folgenden Befehl im Terminal aus
sudo visudo
Die folgende Zeile wurde am Ende der Datei hinzugefügt:
vidyadhar ALL= NOPASSWD: /bin/rm
Im obigen Beispiel ist vidyadhar der Benutzername und es wird nicht nach dem Passwort gefragt, wenn Sie den Befehl rm über vidyadhar ausführen.
sudo rm -rf 'slash'
( diesen Befehl nicht ausführen ), der von diesem Benutzer ausgeführt wird, kein Passwort erfordern .. Ich weiß nicht, es fühlt sich unsicher an, nein?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
sicherer.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, was viel sicherer wäre.