Linux
有哪些方法可以在環境變數中加密密碼
我有這個文件,用於在導出值之前設置我的使用者名和密碼。
#!/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