質問: コマンドライン引数として渡されたパスワードを非表示にする方法は? 私は、たとえば次のようないくつかの機能のロックを解除するために、パスフレーズを入力する特定のアクションを必要とするソフトウェアデーモンを実行しています。$ darkcoind masternode start <mypassphrase> これで、ヘッドレスのdebianサーバーにセキュリティ上の懸念が生じました。たとえばctrl+rを使用してbash履歴を検索すると、この強力なパスワードが表示されます。今、私は自分のサーバーが危険にさらされており、侵入者がシェルにアクセスでき、単純にctrl+rを使用して履歴からパスフレーズを見つけることができると想像します。パスフレーズを入力せずに、bashの履歴、ps、/procなどに表示する方法はありますか?update 1:デーモンにパスワードを渡さないと、エラーがスローされます。これはオプションではありません。アップデート2:ソフトウェアや、開発者をぶら下げるなどの役立つヒントを削除するように言わないでください。私はこれがベストプラクティスの例ではないことを知っていますが、このソフトウェアは bitcoin に基づいており、すべてのビットコインベースのクライアントは、これらのコマンドをリッスンするjson rpcサーバーの一種であり、既知のセキュリティ問題はまだ議論されています( a 、 b 、 c )。update 3:デーモンはすでに起動しており、コマンドで実行されています$ darkcoind -daemon psを実行すると、起動コマンドのみが表示されます。$ ps aux | grep darkcoin user 12337 0.0 0.0 10916 1084 pts/4 s+ 09:19 0:00 grep darkcoin user 21626 0.6 0.3 1849716 130292 ? sll may02 6:48 darkcoind -daemon したがって、パスフレーズを使用してコマンドを渡しても、psまたは/procにはまったく表示されません。$ darkcoind masternode start <mypassphrase> $ ps aux | grep darkcoin user 12929 0.0 0.0 10916 1088 pts/4 s+ 09:23 0:00 grep darkcoin user 21626 0.6 0.3 1849716 130292 ? sll may02 6:49 darkcoind -daemon これは、歴史がどこに現れるのかという疑問を残しますか? .bash_historyのみ
回答: 残念ながら、darkcoindコマンドがパスワードをコマンドライン引数として期待している場合、psなどのユーティリティを介して公開されます。唯一の実際の解決策は 開発者を教育する です。psの公開は避けられないかもしれませんが、少なくともパスワードがシェルの履歴ファイルに書き出されないようにすることができます。 $ xargs darkcoind masternode start password⏎ ctrld 履歴ファイルはxargs darkcoind masternode start、パスワードではありません。