/etc/shadow
のアクセス許可は600です。つまり、root以外のユーザーは読み取ることができません。
ただし、内部のすべてのパスワードはクリアテキストではなくハッシュとして保存されるため(ハッシュから元のパスワードを計算することは不可能です)、なぜ誰もが読み取れないのでしょうか?
ハッシュを元に戻すことはできませんが、一致するものが見つかるまで、考えられるすべてのパスワードのハッシュを試みることができます。また、適切なハードウェアとファイルへのローカルアクセスで毎秒数百万回試行できます。
ファイルに644
権限がある場合、ゲストセッションでもシステムにログインした人はだれでもこのファイルをコンピュータからコピーできます(USBスティックにまたはscp
を介してリモートで、コンピューターにこの証拠を残さずにオフラインの総当たり攻撃を試みます。
Ubuntuの権限は実際には640
ではなく600
であることに注意してください。
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow
ただし、他のユーザーへのアクセス許可はまだないため、これは重要ではありません。また、デフォルトでは、shadow
グループには誰もいません。
もともと、ハッシュは/etc/passwd
(passwd
と呼ばれる理由)に格納されていました。Linuxが作成されたとき、ハッシュがクラッキングされ、当時使用されていた弱い型も事実上不可能でした。しかし、最終的には、少なくとも比較的弱いパスワードであるハッシュのクラッキングが実行可能になるまで、処理能力が向上しました。
/etc/passwd
の許可を640
または600
に変更しても、通常のユーザーとして/etc/passwd
を読み取ることができる正当な理由があるため、機能しません(UIDをユーザー名、ユーザーのフルネーム、電話番号などを取得するため)、ハッシュは/etc/shadow
に移動され、640
パーミッションが付与されました。 /etc/passwd
のユーザーのパスワードハッシュフィールドの代わりにx
を使用して、そのユーザーのハッシュが/etc/shadow
に保存されていることを示します。
実際、/ etc/shadowは、fromからユーザー名とパスワードの一般に読み取り可能なリストを移動できるように作成されました。
実際に答えを得る前に、これはちょっとした歴史の教訓になります。履歴を気にしない場合は、少し下にスクロールします。
昔、Linuxを含むUnixライクなOSは、一般的にすべて/ etc/passwdにパスワードを保持していました。このファイルには、たとえば数値のユーザーIDとユーザー名の間のマッピングを可能にする情報が含まれているため、誰でも読み取り可能です。その情報は、完全に合法的な目的のために普通のユーザーにとっても非常に有用であるため、ファイルの世界を読み取り可能にすることは、ユーザビリティにとって非常に有益です。
当時も、ログインできる人なら誰でも自由に読むことができる有名な場所にあるファイルにパスワードをプレーンテキストで保存するのは悪い考えであることに気づきました。ある意味で、パスワードはハッシュ化されました。これは古い「暗号化」パスワードハッシュメカニズムであり、現代のシステムではほとんど使用されませんが、レガシーの目的でサポートされることがよくあります。
システムの/ etc/passwdを見てください。どこでもx
と書かれている2番目のフィールドを参照してください。問題のアカウントのハッシュ化されたパスワードを保持するために使用されていました。
問題は、人々が/ etc/passwdをダウンロードしたり、ダウンロードすることさえできず、パスワードの解読に取り組むことができるということでした。コンピューターが特に強力ではなかったので、これは大きな問題ではありませんでした(Clifford Stoll、The Cuckoo's Eggで、1つのパスワードをハッシュする時間を与えます) 1980年代半ばには約1秒でIBM PCクラスシステム)が、処理能力が向上するにつれて問題になりました。ある時点で、まともなWordリストを使用して、これらのパスワードのクラッキングが容易になりました。技術的な理由から、このスキームでは8バイトを超えるパスワードもサポートできませんでした。
これを解決するために2つのことが行われました。
そのファイルは/ etc/shadowです。
/ etc/shadowで動作するソフトウェアは、一般的に非常に小さく、高度に焦点を合わせており、問題が発生する可能性があるため、レビューで追加の精査を受ける傾向があります。また、特別な権限で実行されます。これにより、/ etc/shadow、の読み取りと変更が可能になり、通常のユーザーはそのファイルを見ることができなくなります。
/ etc/shadowのアクセス許可は制限されています(ただし、既に指摘したように、あなたが述べているほど厳密ではありません))。そのファイルの目的は機密データへのアクセスを制限することです。
パスワードハッシュは強力であるはずですが、パスワードがインターネット上のトップ500パスワードリストにある場合、ハッシュにアクセスできる人は誰でも見つけることができます。パスワードをすばやく。ハッシュを保護することで、その単純な攻撃を防ぎ、単純なピークから、すでにホストのシステム管理者であるか、または権限昇格攻撃を最初に行うことを要求するまで、成功した攻撃の水準を上げます。特に、正しく管理されたマルチユーザーシステムでは、両方ともsignificantlyは、誰でも読み取り可能なファイルを見るよりも困難です。
/ etc/shadowファイルの許可が600に設定されているのはなぜですか?
誰があなたにそれを言ったの?
$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
簡単な答え:Linuxの許可は真剣に受け止められます。 「他の人」が/etc/shadow
で何かをする理由はありません。そして、グループ「シャドウ」がそれに書き込む理由はありません。そして、実行は順不同です。
ただし、内部のすべてのパスワードはクリアテキストではなくハッシュとして保存されるため(ハッシュから元のパスワードを計算することは不可能です)、なぜ誰もが読み取れないのでしょうか?
その理由は1つだけではないからです。
ハッシュは一方向です。誰かに読み取りアクセス権を与えると、スクリプトを使用してこの一方向を悪用することができます。想像できるWordをリストし、ハッシュを作成するだけです。ある時点で、パスワードと一致する場合があります。ただし、しばらく時間がかかる場合もあります。
この answer は興味深いものであり、ブルートフォーシングに関する推定値があります。
重要な背景:/etc/shadow
は、パスワードハッシュを非表示に保つためだけに存在します。 Unixの初期の時代、パスワードハッシュは/etc/passwd
に保存されていました。コンピューターがより強力になり、ネットワーク接続がより永続的になり、セキュリティのエクスプロイトがより洗練されたため、パスワードハッシュをWordで読み取り可能な状態に保つことが問題を求めていることに気付きました。 (エクスプロイトの詳細は説明しません。これについては十分な答えが既にあります。)
しかし、/etc/passwd
は読み取り保護できませんでした。あらゆる種類のプログラムで、数値のユーザーIDをユーザー名にマッピングし、ホームディレクトリ、デフォルトのシェル、ユーザーのフルネーム(およびオフィス番号など)を検索するために使用されます-man finger
)を確認してください。そのため、機密部分であるパスワードハッシュは/etc/shadow
に移動され、残りはそのまま残りました。そのため、/etc/passwd
(名前を軽deする)にすべてが含まれています除く(ハッシュされた)パスワード。