Quais são as maneiras de criptografar uma senha dentro de uma variável de ambiente?

1

Eu tenho este arquivo que uso para definir meu nome de usuário e senha antes de exportar o valor.

#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password

export http_proxy=http://$user:$password@$domain:$portnum

if curl -silent http://www.google.com | grep authentication_failed;
then
        echo NO CONNECT
        unset http_proxy
else
        echo OK
fi

em history , printenv e export -p Consigo ver o valor que defini

além disso, eu gostaria de uma forma criptografada de minha senha dentro de $ password, em oposição a esse valor contendo minha senha textualmente.

Estou familiarizado com o uso do openssh para senhas salvas ou a impressão de hash usando o crypt () do perl, mas, para o meu propósito, não consigo ver seu uso? quaisquer dicas serão bem-vindas?

    
por kmassada 02.04.2014 / 20:44

2 respostas

3

Não consigo reproduzir o problema que você mencionou com a senha sendo exibida na saída do comando history .

A senha exibida na saída de printenv e export -p está funcionando conforme o esperado. Esses comandos exibem as variáveis de ambiente e é aí que você coloca a string http_proxy .

As variáveis de ambiente são automaticamente herdadas por processos filhos, mas não por outros processos. Não vejo por que você acha que isso é uma grande preocupação, pois é visível apenas para processos dentro do mesmo domínio de segurança.

Mas você pode parar de colocá-lo em uma variável de ambiente e, em vez disso, usar variáveis normais do shell. Então, não seria herdado pelos processos filhos. Como você provavelmente deseja que o curl tenha acesso à variável de ambiente, você poderia passar a variável de ambiente para apenas aquele comando e não todos os outros comandos.

#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password

proxy="http://$user:$password@$domain:$portnum"

if http_proxy="$proxy" curl -silent http://www.google.com | grep authentication_failed;
then
    echo NO CONNECT
else
    echo OK
fi
    
por 02.04.2014 / 20:59
0

Você deve preferir armazenar o paasword em um arquivo seguro que só possa ser lido pelo usuário atual.

Em seguida, insira o conteúdo desse arquivo ou use os mecanismos fornecidos pelo seu aplicativo de destino.

imho curl fornece essas opções itselv.

    
por 03.04.2014 / 16:58