STDINではパスワードを読み取ることができませんが、PTYやパラメータでは読み取れないのはなぜですか?

STDINではパスワードを読み取ることができませんが、PTYやパラメータでは読み取れないのはなぜですか?

私は持っていますプログラム秘密コードを入手してください。端末に手動で入力するか、コマンドライン引数として指定できます。これにより、安全な方法で自動化することが困難です。通常、スクリプトを実行すると端末がなく、コマンドラインからパスワードをps読み取ることができるため、パスワードを渡したくありません。

たとえば(ターミナルから):

$ vault operator unseal
Unseal Key (will be hidden):

(効果がある)

$ vault operator unseal <<<"$PASSPHRASE"
Unseal Key (will be hidden): 
An error occurred attempting to ask for an unseal key. The raw error message
is shown below, but usually this is because you attempted to pipe a value
into the unseal command or you are executing outside of a terminal (tty). You
should run the unseal command from a terminal for maximum security. If this
is not an option, the unseal key can be provided as the first argument to the
unseal command. The raw error was:  file descriptor 0 is not a terminal

(これはうまくいきません)

私はこの問題をうまく克服しました

socat STDIO 'EXEC:vault operator unseal,PTY' <<<"$PASSPHRASE"

しかし、これは悪い考えですか?のクリエイターがvaultSTDINでパスワードを受け入れない理由は明らかですが、これがパスワードを渡す最も安全な方法のようです。だから私は私が安全でないことをしていないことを確認したかったのです。

ベストアンサー1

おすすめ記事