chcę biec
mysqldump -u aUser -p P4SSw0rd --all-databases > backup.sql
w pracy crona. Jak mogę to zrobić bezpiecznie?
Wiem, że mógłbym umieścić polecenie tutaj, ale każdy, kto ma dostęp do maszyny, zobaczy go od razu za pośrednictwem crontab. Czy jest na to lepszy sposób?
Odpowiedzi:
Jak stwierdzono w
man mysqldump
: patrz 6.1.2.1. Wytyczne dla użytkowników końcowych dotyczące bezpieczeństwa haseł w podręczniku MySQL.Plik opcji jest najbezpieczniejszym zakładem, zwłaszcza zgodnie z powyższym odniesieniem. Podanie go jako zwykłego tekstu w crontab nie jest dobre, zwłaszcza że domyślnie wiersz poleceń procesu jest widoczny
ps
dla innych użytkowników. To samo dotyczy zmiennych środowiskowych, jak wyjaśniono w odnośniku.Odpowiednia część podręcznika MySQL:
Zobacz także /programming//q/10725209 .
źródło
Uruchom cronjob jako konkretnego użytkownika i użyj prostej logiki Bash, aby wyodrębnić hasło z pliku tekstowego przechowywanego gdzieś w systemie z uprawnieniami, które pozwalają tylko użytkownikowi (lub grupie) na dostęp.
Jeśli więc cronjob działa jako „przykład” użytkownika, właścicielem pliku powinna być „przykład: przykład” i mieć uprawnienie 0400.
Możesz także osiągnąć podobną funkcję, używając pliku .my.cnf na poziomie użytkownika .
źródło
read PASS < /path/to/pwdfile
jest idiomatycznie czystszy, aby zrobić to samo (chyba, jak sądzę; zastosowanie ma superuser.com/q/323060/49184 ).ARGMAX
, wymaga to dodatkowego procesu zamiast korzystania z wbudowanej powłoki, może kusić konstrukcje takie jakfor i in `cat file`; do ...
własna tablica problemów itp. Ale oczywiście, ponieważ z większością rzeczy: jeśli ktoś wie, co się dzieje, może robić to, co chce. Nie biorę tu udziału w krucjacie, niezależnie od tego, jak mogłoby się to wydawać :-D.Każdy, kto ma dostęp do urządzenia, ma taki sam poziom dostępu,
/var/spool/cron/crontabs/
na/var/lib/mysql
jaki pozwalasz. Ustaw odpowiednie uprawnienia do katalogów i gotowe. Każda osoba z dostępem roota ma bezpośredni dostęp do plików bazy danych bezpośrednio. Każdy, komu nie ufasz, że ma dostęp do komputera, nie powinien mieć do niego dostępu.Zwykle ludzie widzą tylko swoje cronjobs przez
crontab -l
.źródło
Dla celów tworzenia kopii zapasowych, rozważ posiadanie użytkownika mysql w trybie tylko do odczytu
mysqldump wymaga tylko
SELECT
iLOCK TABLES
uprawnień do wykonywania swojej pracy.źródło