Ich möchte rennen
mysqldump -u aUser -p P4SSw0rd --all-databases > backup.sql
in einem Cron Job. Wie kann ich das sicher machen?
Ich weiß, dass ich den Befehl genau dort platzieren könnte, aber jeder, der Zugriff auf die Maschine hat, würde ihn sofort über crontab sehen. Gibt es einen besseren Weg, dies zu tun?
Antworten:
Wie angegeben in
man mysqldump
: siehe 6.1.2.1. Endbenutzerrichtlinien für die Kennwortsicherheit im MySQL-Referenzhandbuch.Eine Optionsdatei ist die sicherste Wette, nicht zuletzt gemäß der obigen Referenz. Es ist nicht gut, es in crontab im Klartext anzugeben, nicht zuletzt, weil die Prozessbefehlszeile standardmäßig
ps
für andere Benutzer sichtbar ist . Gleiches gilt für Umgebungsvariablen, wie in der Referenz erläutert.Relevanter Teil des MySQL-Referenzhandbuchs:
Siehe auch /programming//q/10725209 .
quelle
Führen Sie den Cronjob als bestimmten Benutzer aus und extrahieren Sie das Kennwort mithilfe einer einfachen Bash-Logik aus einer Klartextdatei, die irgendwo auf dem System gespeichert ist, mit Berechtigungen, die nur dem Benutzer (oder möglicherweise der Gruppe) den Zugriff darauf ermöglichen.
Wenn der Cronjob als Benutzerbeispiel ausgeführt wird, sollte der Besitz der Datei "Beispiel: Beispiel" sein und die Berechtigung 0400 haben.
Sie können eine ähnliche Funktion auch mit einer .my.cnf auf Benutzerebene erreichen .
quelle
read PASS < /path/to/pwdfile
ist ein idiomatisch sauberer, um das Gleiche zu tun (wohl denke ich; superuser.com/q/323060/49184 gilt).ARGMAX
, es erfordert einen zusätzlichen Prozess, anstatt eine eingebaute Shell zu verwenden, es könnte Konstrukte wiefor i in `cat file`; do ...
mit seiner eigenen Reihe von Problemen usw. verführen . Aber natürlich als mit den meisten Dingen: Wenn man weiß, was passiert, kann man tun, was man will. Ich bin hier nicht auf einem Kreuzzug, egal wie es aussehen mag :-D.Jeder, der Zugriff auf das Gerät hat, hat dieselbe Zugriffsebene,
/var/spool/cron/crontabs/
auf die/var/lib/mysql
Sie ihn zulassen. Legen Sie also die richtigen Berechtigungen für die Verzeichnisse fest und fertig. Jeder mit Root-Zugriff hat direkten Zugriff auf die Datenbankdateien. Personen, denen Sie nicht vertrauen, dass sie Zugriff auf das Gerät haben, sollten überhaupt keinen Zugriff auf das Gerät haben.Normalerweise sehen die Leute ihre eigenen Cronjobs nur über
crontab -l
.quelle
Erwägen Sie für Sicherungszwecke, einen schreibgeschützten Benutzer in MySQL zu haben
mysqldump benötigt nur
SELECT
undLOCK TABLES
Berechtigungen, um seine Arbeit zu erledigen.quelle