curl
何度も実行されるスクリプトがあります。
パスワードは一度だけ入力したいと思います(それで実行するたびにカールがパスワードを要求したくありません)。プロセスリストやファイル記述子などにパスワードを表示したくありません。
#!/bin/bash
read -p "Enter pw:" -s pw
provide_pw() {
cat << END
"$pw"
END
}
for i in {1..10}; do
curl -u $(logname):$(provide_pw) "$url"
done
この方法は安全ですか?これにより、他のユーザーが自分のパスワードを知ることができますか?
ベストアンサー1
$(provide_pw)
read、cat、およびheredocsに関連するすべての操作の場合、最終コマンドの置き換えは実際のパスワードに置き換えられます。その後、プロセスの詳細の一部になります。
~からman curl
、について-u
:
動作するシステムでは、カールはプロセスのリストから与えられたオプション引数を隠します。
したがって、これらのシステムと適切に設定されたLinuxシステムではパスワードが他のユーザーに隠されますが、他の場所では、などを使用してhidepid
カールプロセスのコマンドラインを見ると誰でもパスワードを見ることができます。ps
top
read
パスワードが必要な場合は、curl
次の手順を実行してください。
ユーザー名のみを指定すると、カールはパスワードの入力を求められます。
また見なさい:カールは、パスワードがps出力に表示されないようにどのように保護しますか?これには競争条件があります。カールを開始してコマンドラインをクリーンアップする間にパスワードが表示され、他の方法(Linuxなど)で非表示にしないと、そのウィンドウのすべてのhidepid
人に表示されます。