web-dev-qa-db-ja.com

通常のユーザーは/ etc / passwdを読み取ることができますが、これはセキュリティホールですか?

ls -l /etc/passwd

与える

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd

したがって、一般ユーザーはファイルを読み取ることができます。これはセキュリティホールですか?

20
Ankur Agarwal

実際のパスワードハッシュは/etc/shadowに保存され、通常のユーザーは読み取ることができません。 /etc/passwdは、システムが機能するためにすべてのユーザーが読み取る必要があるユーザーIDとシェルに関するその他の情報を保持します。

50
Michael

通常、ハッシュされたパスワードは、ほとんどの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プログラムの数を大幅に削減できます。

16
sarnold

パスワードは何年も/etc/passwdに保存されていません。名前はレガシーであり、ローカルユーザーデータベースであるという機能は残ります必須その目的のためにすべてのユーザーが読み取り可能である必要があります。

13
geekosaur

ユーザーを特定できるため、ある程度はそうです。以前は、パスワードを取得することもできました。ただし、実際にクラックする価値がある1つのユーザーIDはrootであり、パスワードファイルなしでよく知られています。

一般に、パスワードファイルを誰でも読み取り可能にするユーティリティは、リスクよりはるかに重要です。世界中で読めなくても、機能するgetent passwdコマンドは、セキュリティゲインを無効にします。

Root以外のユーザーが他のユーザーが所有するファイルを識別する機能はなくなります。所有されている(passwdファイル内のユーザー)ファイルと所有されていないファイル(passwdファイル内にないユーザー)を識別できると、ファイルシステムの内容を確認するのに役立ちます。これを適切なsetuidプログラムで解決することは可能ですが、それらのプログラムを介して巨大な攻撃ベクトルが追加されます。

結局のところ、それはバランスの問題であり、この場合、バランスはパスワードの世界を解読できるようにすることでしっかりと言えるでしょう。

6
BillThor