以下は、Linuxでbashでユーザーを作成するために行ったプロセスのイメージです。
セキュリティの目的でパスワードを表示すべきではないことを理解していますが、どういう意味ですか、なぜアスタリスク(または入力した文字)が表示されないのですか?
以下は、Linuxでbashでユーザーを作成するために行ったプロセスのイメージです。
セキュリティの目的でパスワードを表示すべきではないことを理解していますが、どういう意味ですか、なぜアスタリスク(または入力した文字)が表示されないのですか?
回答:
それが* nixの土地でのやり方だからです。:) たくさんのアスタリスクを表示しないことで、セキュリティが少し強化されます。そうすれば、画面を見た人はパスワードの長さを見ることができません。
しかし、特にキーボードの品質が悪い場合は、パスワードを入力しているときにフィードバックを得られないことが少し怖いことを認めなければなりません。そのため、* nixシステムのほとんどのGUIパスワードダイアログでは、たとえばアスタリスクを使用したり、より一般的には、何らかのフィードバックが提供されます。また、入力中に各文字を表示するものもありますが、すぐにa *
またはwithに置き換えますが、誰かが肩越しに見ている場合はあまり良くありません。または、コンピューターからモニターに送信されるビデオ信号をピックアップおよびデコードできるデバイスがある場合。
stty -echo
ユーザー入力を非表示にする最も簡単な方法は何ですか?
表示しない!
入力中にパスワードを非表示にするのは昔からの伝統です。ほとんどの場合、セキュリティの観点から理にかなっています。誰かがあなたの肩越しに見ている場合、入力しているものを簡単に見られたくはありません。(一部の最新のセキュリティガイドライン(1 2 3 4 5など)では、パスワードを表示するオプションを推奨しています。これにより、ユーザーはより複雑なパスワードを選択できるようになり、不可視の修正に時間を費やさない自信が得られるためです。タイプミス。最大のリスクはショルダーサーフィンではなく、おそらくはオフラインでの総当たり攻撃です。)
パスワードを非表示にすることを決定したため、実装者はその方法を決定する必要がありました。端末には、ユーザー入力が表示されるモード(エコーオン)と、ユーザー入力が表示されないモード(エコーオフ)があります。エコーオフモードには、ある意味で本質的な存在があります。これは、端末がユーザー入力をエコーする余分な作業を行わないモードです。このモードは、キーを入力してもその文字が挿入されず、代わりにそのキーにバインドされているアプリケーションショートカットが呼び出されるアプリケーションにも存在する必要があります。そのpasswd
ため、パスワードの読み取り中に端末をエコーオフモードに設定するだけのようなコマンドです。
各文字のアスタリスクを印刷するには、passwd
コマンドの実装者が実行したいとは感じていない、比較的小さな利益のためだけに追加の実装作業が必要になります。アスタリスクを印刷するためのターミナルモードはありません。これは、パスワードを入力するときにのみ役立つ非常に特殊な機能になるためです。
ちなみに、パスワードを変更するときにパスワードを確認したい場合は、使用できますcat | passwd
(少なくとも一部のシステムでpasswd
は、一部のバージョンではのようなオプションが必要であり、cat | passwd --stdin
一部はこれをまったく受け入れません)。(実行することもできますが{ echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
、実行しないでください。パスワードがシェル履歴に保存されるため、漏洩のリスクがはるかに高くなります。)何らかの方法ではなく、ターミナルからパスワードを読み取るコマンドを使用して、sudo
またはなどの標準入力ssh
はより複雑です。GUIを使用できる場合は、入力した文字数を表示するssh-askpassを使用できます(SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
sudoの場合、sshの場合、ターミナルから呼び出すと複雑になります)。
パスワードの長さは他人には見えないため、パスワードを非表示にすると、より安全になります。これにより、他の人がパスワードの長さからパスワードを推測してアカウントにログインしようとするリスクを回避できます。