ls -l /etc/passwd
与える
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd
したがって、一般ユーザーはファイルを読み取ることができます。これはセキュリティホールですか?
実際のパスワードハッシュは/etc/shadow
に保存され、通常のユーザーは読み取ることができません。 /etc/passwd
は、システムが機能するためにすべてのユーザーが読み取る必要があるユーザーIDとシェルに関するその他の情報を保持します。
通常、ハッシュされたパスワードは、ほとんどのLinuxシステムの/etc/shadow
に保存されます:
-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow
(これらは BSDシステム の/etc/master.passwd
に格納されています。)
認証を実行する必要があるプログラムは、root
特権で実行する必要があります。
-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd
setuid root
プログラムと、システム上のすべてのハッシュされたパスワードを含む1つのファイルが嫌いな場合は、それを Openwall TCB PAMモジュール に置き換えることができます。これは ハッシュ化されたパスワードを保存するための独自のファイルを持つすべての単一ユーザー -結果として、システム上のsetuid root
プログラムの数を大幅に削減できます。
パスワードは何年も/etc/passwd
に保存されていません。名前はレガシーであり、ローカルユーザーデータベースであるという機能は残ります必須その目的のためにすべてのユーザーが読み取り可能である必要があります。
ユーザーを特定できるため、ある程度はそうです。以前は、パスワードを取得することもできました。ただし、実際にクラックする価値がある1つのユーザーIDはroot
であり、パスワードファイルなしでよく知られています。
一般に、パスワードファイルを誰でも読み取り可能にするユーティリティは、リスクよりはるかに重要です。世界中で読めなくても、機能するgetent passwd
コマンドは、セキュリティゲインを無効にします。
Root以外のユーザーが他のユーザーが所有するファイルを識別する機能はなくなります。所有されている(passwdファイル内のユーザー)ファイルと所有されていないファイル(passwdファイル内にないユーザー)を識別できると、ファイルシステムの内容を確認するのに役立ちます。これを適切なsetuid
プログラムで解決することは可能ですが、それらのプログラムを介して巨大な攻撃ベクトルが追加されます。
結局のところ、それはバランスの問題であり、この場合、バランスはパスワードの世界を解読できるようにすることでしっかりと言えるでしょう。