一部のアプリケーションでは、パスワードをパラメータとして渡すことができます。たとえば、
mysql --user=user_name --password=your_password db_name
安全ですか?入力したパスワードがbash履歴に保存されるだけでなく、誰かがw
適切なタイミングでコマンドを入力し、プロセスの完全なコマンドライン(パスワードを含む)を表示できます。
驚くべきことに、すべてのユーザーは現在実行中のコマンドを見ることができます。
答え1
システム内のすべてのプロセスのコマンドラインパラメータは「公開」と見なされます。もちろんw
、コマンドだけでなくps
他の多くのコマンドでもこの情報にアクセスできます。top
実際、この情報を取得するために特別な権限は必要ありません。 Linuxでは/proc/<pid>/cmdline
。
w
top
これは、またはps
欠陥や安全でない動作ではありませんcat
。代わりに、マルチユーザーシステムのコマンドラインから機密情報を絶対に渡さないことは責任です。
コマンドラインでパスワードを許可するほとんどのユーティリティは、これが推奨されていないことを示します。たとえば、mysql
マンページは次のようになります。
コマンドラインでパスワードを指定することは安全ではないと見なされるべきです。セクション5.3.2.2「パスワードセキュリティのエンドユーザーガイド」を参照してください。オプションファイルを使用すると、コマンドラインにパスワードを入力する必要がなくなります。
ちなみに、環境変数にパスワードや機密データを渡すことはあまり安全ではありませんが、実際にはほとんどのシステムでは安全ではありません。
答え2
いいえ、コマンドラインからプログラムにパスワードを渡すことは安全ではありません。使用するのが最善です。
mohsen@debian:~$ mysql -uuser -p
Enter password:
答え3
安全ではありませんが、Linuxはまだ20代前半であることに注意してください。 IT の他のすべてと同様に、セキュリティ上の問題は当時明確ではなかったか、後で解決されました。
したがって、他の回答で述べたように、コマンドラインでパスワードを使用しないでください。
マウントリングによって提供される情報を制限したり、おそらくそれを行う必要があるかもしれませんprocfs with the
。サイバーセキュリティ強化されたコア。少なくともこの記事を書いている時点では、これによって一部の項目(おそらくcgroupとそれに依存するすべての項目 - たとえばシステム)が破損する可能性があります。