Linux

有哪些方法可以在環境變數中加密密碼

  • June 21, 2021

我有這個文件,用於在導出值之前設置我的使用者名和密碼。

#!/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

history, printenv, 中,export -p我可以看到我設置的值

此外,我想在 $password 中使用加密形式的密碼,而不是包含我的密碼的值。

我熟悉使用 openssh 來加鹽密碼,或使用 perl 的 crypt() 列印雜湊,但出於我的目的,我看不到它的用法?任何提示將不勝感激?

我無法重現您提到的問題,密碼顯示在history命令的輸出中。

密碼顯示在輸出中printenv並且export -p按預期工作。這些命令顯示環境變數,這就是您放置http_proxy字元串的位置。

環境變數由子程序自動繼承,但不會由任何其他程序繼承。我不明白您為什麼認為這是一個主要問題,因為它僅對同一安全域中的程序可見。

但是您可以停止將其放入環境變數中,而是使用普通的 shell 變數。然後它不會被子程序繼承。由於您可能希望 curl 能夠訪問環境變數,因此您可以將環境變數僅傳遞給該一個命令,而不是所有其他命令。

#!/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

引用自:https://unix.stackexchange.com/questions/122886