[ОТВЕТИТЬ]
18.10.2016 10:23
OlegON
 
В Linux все работает по принципу Unix-way, т.е. дело архиватора - сжимать. Но как быть, если надо не только сжать, но и зашифровать содержимое? Простой и надежный способ - 7zip. Однако, иногда хочется понять все до конца. И в итоге...

Показываю на примере сжатия дампа mysql
Код:
mysqldump -hlocalhost -uПОЛЬЗОВАТЕЛЬ -pПАРОЛЬКБАЗЕ --opt БАЗА | xz | openssl enc -aes-256-cbc -e -pass pass:ПАРОЛЬ >dump.dmp
Соответственно, чтобы раскодировать все это счастье
Код:
openssl aes-256-cbc -d -in dump.dmp | xz --decompress > dump.decoded.dmp
Обратите внимание, что пароль для openssl можно задать разными способами и не светить его в списке процессов, например, задав через переменную окружения.

Для директорий аналогичным образом можно использовать tar.
18.10.2016 10:31
student
 
Цитата:
OlegON Соответственно, чтобы раскодировать все это счастье
а пароль в командной строке на раскодирование указывается аналогично ? т.е. "-pass pass:ПАРОЛЬ" ?
18.10.2016 10:38
OlegON
 
Да, можно добавить этот параметр, можно, как в моем примере, неавтоматизированно вписать руками :)

На всякий процитирую доку
Цитата:
PASS PHRASE ARGUMENTS
Several commands accept password arguments, typically using -passin and -passout for input and output passwords respectively. These allow the password to be obtained from a variety of sources. Both of these options take a single argument whose format is described below. If no password argument is given and a password is required then the user is prompted to enter one: this will typically be read from the current terminal with echoing turned off.

pass:password
the actual password is password. Since the password is visible to utilities (like 'ps' under Unix) this form should only be used where security is not important.

env:var
obtain the password from the environment variable var. Since the environment of other processes is visible on certain platforms (e.g. ps under certain Unix OSes) this option should be used with caution.

file:pathname
the first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password. pathname need not refer to a regular file: it could for example refer to a device or named pipe.

fd:number
read the password from the file descriptor number. This can be used to send the data via a pipe for example.

stdin read the password from standard input.
21.01.2018 20:04
OlegON
 
Цитата:
OlegON xz | openssl enc -aes-256-cbc
Кстати, bzip2 отлично жмет дампы (у меня форумный xz жмет около 2 минут, а bzip2 - около 20 секунд при разнице около 5Мб в размере). Единственное, по понятной причине надо всегда сначала архивировать, а потом в openssl шифровать, а не наоборот.
22.01.2018 09:32
OlegON
 
Обратите внимание на еще один нюанс. Если вы переносите полученный бекап с машину на машину, где версии openssl различаются, при расшифровке может выскочить ошибка
Цитата:
digital envelope routines: EVP_DecryptFInal_ex: bad decrypt
например
Цитата:
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:546:
связано это с тем, что в каких-то версиях были изменены параметры по умолчанию и для того, чтобы расшифровать данные, необходимо эти умолчания указывать напрямую.
Например, у меня при переходе с новой версии на старую потребовалось добавить параметр -md sha256
Код:
openssl aes-256-cbc -d -md sha256 -in testopenssl >decodedtest
В обратном переходе может потребоваться добавить параметр
-md md5
я просто занервничал, споткнувшись об эту ошибку... Но нет, с параметром удалось с Fedora перенести файлик на Solaris.
Опции темы


Часовой пояс GMT +3, время: 15:47.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.