6

Я хочу автоматизировать следующий ручной процесс.

В настоящее время я шифрую набор файлов с использованием openssl следующим образом:

Зашифруйте файл file.txt в file.out, используя 256-битный AES в режиме CBC

$ openssl enc -aes-256-cbc -salt -in file1 -out file1.enc

Затем мне предлагается ввести пароль, который затем используется для шифрования файла.

При расшифровке я набираю

$ openssl enc -d -aes-256-cbc -in file1.enc -out файл

Затем мне предлагается ввести пароль - который я снова ввожу вручную.

Я хочу автоматизировать этот процесс en/decryption - поэтому мне нужно найти способ предоставить openssh пароль.

Моя первая мысль: можно ли прочитать пароль из файла (скажем)? Или есть лучший способ сделать это?

Кроме того, я полагаю, что мне придется наложить ограничения на то, кто может просматривать файл паролей - в противном случае это противоречит цели использования пароля. Я думаю запустить скрипт bash от имени конкретного пользователя, а затем дать только этому пользователю права на чтение содержимого этого файла.

Так ли это сделано или есть лучший способ?

Конечно, все это приводит к еще одному вопросу - как запустить скрипт bash от имени другого пользователя - без необходимости вводить пользователя pwd в терминале ...?

Кстати, я работаю на Linux Ubuntu 10.0.4

1 ответ1

7

Читающий man openssl (особенно раздел 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.

openssl enc принимает -pass <arg> ... так, выберите ваш аргумент из списка, приведенного выше. например:

 echo -n "secret" | openssl enc -aes-256-cbc -salt \
        -in file1 -out file1.enc \
        -pass stdin

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .