Ich werde nicht darauf eingehen, wie sehr dies eine schlechte Idee ist. Einfach ausgedrückt, für die Ausführung sudoin 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 sudoin die crontab schreiben müssen , wenn Sie die crontab von root ändern.
Verwende root's crontab
Führen Sie den folgenden Befehl aus:
sudo crontab -e
Dies öffnet die rootCrontab. sudoIn diesem Kontext ist es nicht erforderlich, Ihren Befehl auszuführen, da er wie gewohnt aufgerufen rootwird.
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.
Froh, dass es funktioniert! Seien Sie nur vorsichtig mit Sicherheitslücken, die Sie hinterlassen. Sie könnten später wiederkommen, um Sie zu verfolgen.
SirCharlo
1
@SirCharlo Warum sollte die rootBenutzer-Crontab anstelle der systemweiten Crontab verwendet werden /etc/crontab?
Eliah Kagan
1
@ Elijah warum nicht?
SirCharlo
2
Diese Antwort verfehlt die Markierung, da sie die in Ihrer sudoersDatei verfügbaren Feinheiten , wie Sudo-Gruppen ohne Kennwortanforderung, überschreibt .
Brent
sehr sehr nützlicher Punkt, danke für die große Hilfe.
Nasser Mansouri
33
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.
Ich würde den Befehl auch in /etc/cron.hourly/something platzieren. Dafür sind diese Verzeichnisse da.
John S Gruber
3
Nein, Sie könnten es in /etc/cron.SOMETHING/SCRIPT einfügen, aber ich würde nicht beides tun. Beide würden ungefähr die gleiche Funktion haben, obwohl Sie mit crontab ein bisschen mehr Einfluss darauf haben würden, wie oft / wann etwas läuft.
tgm4883
1
Ich hätte klarstellen sollen, dass ich das als Alternative meinte. Vielen Dank.
John S Gruber
3
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.
Hmm .. Dann würde jeder böswillige Befehl, wie 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?
SirCharlo
Ja, ich weiß es. Ihr Ansatz ist gut. Ich verwende jedoch den obigen Ansatz, um anderen Benutzern Rechte zum Beenden / Starten bestimmter Dienste zu erteilen.
Vidyadhar
24
Das ist eine extrem schlechte Idee. Bitte tu das nicht.
Das ist eine schreckliche Idee. Sie haben rm pauschale Sudo-Berechtigungen erteilt . Vergeben Sie stattdessen sudo-Berechtigungen für ein Skript Ihres Befehls, einschließlich rm oder anderer in diesem Skript, machen Sie es ausführbar und geben Sie dann sudo-Berechtigungen für dieses Skript. <username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, was viel sicherer wäre.
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.Verwende root's crontab
Führen Sie den folgenden Befehl aus:
Dies öffnet die
root
Crontab.sudo
In diesem Kontext ist es nicht erforderlich, Ihren Befehl auszuführen, da er wie gewohnt aufgerufenroot
wird.Daher würden Sie einfach Folgendes an die crontab von root anhängen.
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:
Der offensichtliche Nachteil hierbei ist, dass Ihr Passwort im Klartext lesbar ist, sollte jemals jemand auf Ihre crontab zugreifen.
Das solltest du nicht tun.
quelle
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.
quelle
Führen Sie den folgenden Befehl im Terminal aus
Die folgende Zeile wurde am Ende der Datei hinzugefügt:
Im obigen Beispiel ist vidyadhar der Benutzername und es wird nicht nach dem Passwort gefragt, wenn Sie den Befehl rm über vidyadhar ausführen.
quelle
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.