環境変数にパスワードが格納されています。
read -s passwd
export passwd
欠点:使用echo $passwd
これで、パスワードを許可するコマンドstdin
(例kinit
:)にパイプしたいと思います。ただし、bashがset -x
有効になるとパスワードが漏洩します。
(warning: will leak password if set -x is enabled)
$ echo $passwd | kinit [email protected]
+ kinit [email protected]
+ echo secretpassword
...(kinit output)...
代替案:使用printenv passwd
printenv
それでパスワードをstdin
、代わりに書いてみましたecho
。
(is this ok?)
$ printenv passwd | kinit [email protected]
+ kinit [email protected]
+ printenv passwd
...(kinit output)...
試みると、bash出力にパスワードが印刷されません。
Q:使用できますかprintenv
?
しかし、本当に安全ですか?パスワードを漏らすことができるbash設定はどこにありますか?
set -x
編集:stdout / stderrで印刷することが修正されたとは思わないでください。
ベストアンサー1
を使用すると、printenv
変数をエクスポートする必要があります。つまり、変数をスクリプト内の他のコマンドに公開する必要があります。ただし、変数のエクスポートと入力としての使用の間に他のコマンドがなく、使用後すぐに設定を解除すると、誤ってログにダンプされる可能性が低くなります。
Bashを使用している場合は、次の文字列を使用できます。
kinit [email protected] <<<"$passwd"
ここにある文字列はset -x
出力に含まれず、変数をエクスポートする必要はありません。
$ bar=abc
+ bar=abc
$ cat <<<"$bar"
+ cat
abc
ただし、ここの文字列は一時ファイルを生成するため、潜在的な漏洩の原因と見なすことができます。