Criptografia de arquivo em um script bash sem explicitamente fornecer senha

6

Eu quero automatizar o seguinte processo manual.

Atualmente, estou criptografando um conjunto de arquivos usando o openssl da seguinte forma:

Criptografar file.txt para file.out usando AES de 256 bits no modo CBC

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

Em seguida, é solicitada uma senha, que é usada para criptografar o arquivo

Ao descriptografar, eu digito

$ openssl enc -d -aes-256-cbc -in file1.enc -out file

Em seguida, solicito a senha - que, novamente, eu digito manualmente.

Eu quero automatizar este processo de en / descriptografia - então eu preciso encontrar uma maneira de fornecer openssh com a senha.

Meu primeiro pensamento é se é possível ler a senha de um arquivo (digamos)? Ou existe uma maneira melhor de fazer isso?

Além disso, suponho que terei que restringir quem pode ver o arquivo de senhas - caso contrário, isso anula todo o objetivo de usar uma senha. Estou pensando em executar o script bash como um usuário específico e, em seguida, dar apenas os direitos de leitura desse usuário ao conteúdo desse arquivo.

É assim que é feito - ou existe uma maneira melhor?

É claro que tudo isso leva a outra pergunta - como executar um script bash como outro usuário - sem ter que digitar o usuário pwd no terminal ...?

BTW, estou executando no Linux Ubuntu 10.0.4

    
por morpheous 30.07.2010 / 19:49

1 resposta

7

lendo man openssl (especialmente a seção ARREGAMENTOS FRASE DO PASSE ):

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 aceita -pass <arg> ... então, escolha seu argumento na lista acima. por exemplo:

 echo -n "secret" | openssl enc -aes-256-cbc -salt \
        -in file1 -out file1.enc \
        -pass stdin
    
por 30.07.2010 / 20:45