/ etc / shadowのファイル許可が600に設定されているのはなぜですか?


25

のアクセス許可/etc/shadowは600です。これは、root以外のユーザーが読み取れないことを意味します。

ただし、内部のすべてのパスワードはクリアテキストではなくハッシュとして保存されるため(ハッシュから元のパスワードを計算することは不可能です)、なぜ誰もが読み取れないのでしょうか?


あなたがのための権限が確信している/etc/shadowしていますか600
edwinksl

4
Stackoverflowアカウントのパスワードがハッシュ化されている場合、ハッシュ化されたパスワードを他のユーザーに見せてもらえますか?
チョン

5
@ByteCommander。時々、編集に賛成票を投じる方法が必要です。
TRiG

回答:


60

オフラインの総当たり攻撃を防ぐため。

ハッシュを元に戻すことはできませんが、一致するものが見つかるまで、考えられるすべてのパスワードのハッシュを試みることができます。また、適切なハードウェアとファイルへのローカルアクセスで毎秒数百万回試行できます。

ファイルに644アクセス許可がある場合、ゲストセッションであってもシステムにログインしたユーザーは、このファイルをコンピューターから(USBスティックまたはリモート経由でscpコピーし、オフラインのブルートフォース攻撃を試みることができます。あなたのコンピューターにこの証拠を残さずに


Ubuntuのパーミッションは実際640にはであることに注意してください600

$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow

ただし、他のユーザーに対するアクセス許可はまだないため、これは重要ではありませんshadow。デフォルトでは、グループに誰もいません。


もともとは、Linuxが作成されたときのように、ハッシュが格納されていたためです/etc/passwd(これが呼ばれる理由ですpasswd)。しかし、最終的には、少なくとも比較的弱いパスワードであるハッシュのクラッキングが実行可能になるまで処理能力が向上しました。

/etc/passwdへのアクセス許可の変更640または機能600しない。/etc/passwd通常のユーザーとして読み取ることができる正当な理由(UIDをユーザー名に変換する、ユーザーのフルネーム、電話番号などを取得する)が多数あるため、ハッシュがに移動したため/etc/shadow640許可が与えられました。のxユーザーのパスワードハッシュフィールドの代わりに/etc/passwd、そのユーザーのハッシュが/etc/shadow代わりに格納されることを示すために使用されます。


1
ファイルのコピーをお願いします!
リンツウィンド

1
そして、私は担当者を必要としません;-)編集:うーん、彼は私のものにそれを設定しました:Pごめんなさい:D edit2そして今、それは再び戻ってきました。EH:D
Rinzwind

6
最後に、ハッシュされたパスワードを/ etc / passwdに戻し、/ etc / shadowから行を削除し、ログインできることを期待していることを確認しました。この答えで。
ジョシュア

8
/ etc / passwdのアクセス許可が644であることは注目に値します。これまで、パスワードハッシュはここに格納されていたと思います。ただし、このファイルを640に変更すると、あらゆる種類の互換性の問題が発生するため、代わりにパスワードハッシュがシャドウに移動され、passwdから削除されます。これにより、passwdの他の情報は、別のファイル。
ロドニー

4
@RodneyはBSD 4.3で育った人として、あなたは正しいです。ハッシュは/ etc / passwdに保存されていました。Vax 11/780が最先端であったとき、ファイル内のパスワードに対するブルートフォース攻撃は不可能と考えられていました。おそらくもっと重要なことは、インターネット[Arpanet]は眠そうな小さな背水であり、そのようなことはほとんど考慮されていなかった。sshのみのrlogin / telnetはありませんでした。パスワードファイル644を保持するということはls、uidから名前に変換するためにsetuid root などのユーティリティが必要ないことを意味します。
マイクS

13

実際には、/ etc / shadowは、ユーザー名とパスワードの公開さている読み取り可能なリストから移動できるように作成されました。

ちょっと待ってください。実際の答えを得る前に、これは少し歴史の教訓になります。履歴を気にしない場合は、少し下にスクロールします。

昔は、Linuxを含むUnixライクなOSは、一般的にすべて/ etc / passwdにパスワードを保持していました。そのファイルは、たとえば数値ユーザーIDとユーザー名の間のマッピングを可能にする情報が含まれているため、誰でも読み取り可能です。その情報は、完全に正当な目的のために普通のユーザーにとっても非常に有用であるため、ファイルの世界を読み取り可能にすることは、使いやすさにとって非常に有益です。

当時でも、人々は、ログインできる人なら誰でも自由に読むことができる有名な場所のファイルにプレーンテキストでパスワードを入れるのは悪い考えだと気づきました。ある意味で、パスワードはハッシュされました。これは、古い「暗号化」パスワードハッシュメカニズムであり、現代のシステムではほとんど使用されませんが、多くの場合、レガシーの目的でサポートされています。

システムの/ etc / passwdを見てください。その2番目のフィールドを見てくださいx。問題のアカウントのハッシュ化されたパスワードを保持するために使用されていました。

問題は、人々が/ etc / passwdをダウンロードしたり、ダウンロードすることさえできず、パスワードの解読に取り組むことができるということでした。コンピューターは特に強力ではなかったが、これは大きな問題ではなかった(The Cuckoo's Eggの Clifford Stollは、1980年代半ばにIBM PCクラスシステムで1つのパスワードを約1秒ハッシュする時間を与えた)が、処理能力が向上するにつれて問題になりました。ある時点で、まともな単語リストを使用して、これらのパスワードを解読するのが簡単になりました。技術的な理由から、このスキームは8バイトより長いパスワードもサポートできませんでした。

これを解決するために2つのことが行われました。

  • より強力なハッシュ関数への移行。古いcrypt()はその耐用年数よりも長持ちしており、将来に対応し、計算的に強力な、より現代的なスキームが考案されました。
  • ハッシュされたパスワードを、誰にも読めないファイルに移動します。この方法では、パスワードハッシュ関数が予想よりも弱いことが判明した場合、または誰かが弱いパスワードを持っている場合でも、攻撃者が最初からハッシュ値にアクセスするための別の障害がありました。もはやすべて無料ではありませんでした。

そのファイルは/ etc / shadowです。

/ etc / shadowで動作するソフトウェアは、一般的に非常に小さく、高度に焦点を合わせており、問題が発生する可能性があるため、レビューで追加の精査を受ける傾向があります。また、特別な権限で実行されるため、/ etc / shadowの読み取りと変更が可能になり、通常のユーザーはそのファイルを見ることができなくなります。

つまり、/ etc / shadowのアクセス許可は制限されています(ただし、既に指摘したように、あなたが述べているほど厳密ではありません)。そのファイルの目的は機密データへのアクセスを制限することです。

パスワードハッシュは強力であると想定されていますが、パスワードがインターネットリストの上位500個のパスワードに含まれている場合、ハッシュにアクセスできるユーザーは誰でもパスワードをすばやく見つけることができます。ハッシュを保護することで、その単純な攻撃を防ぎ、単純なピークからホストのシステム管理者であるか、または権限昇格攻撃を最初に受けることを要求するまで、攻撃の成功の水準を上げます。特に、正しく管理されたマルチユーザーシステムでは、両方とも、世界で読み取り可能なファイルを見るよりもはるかに困難です。


私はあなたがすべてのものを記述する方法が本当に好きです:)(y)
シュヴァンシュヴィシュワカルマ

用語/語源:/etc/shadow「シャドウパスワード」を保持しません(それは問題ではないため)。ファイル全体はの影です/etc/passwd。専門用語がで使用されている方法を参照してくださいLinuxのシャドウパスワードのHOWTOあなたのpasswdファイルをシャドウはなぜ?。コンピューティングでの「シャドウ」という用語の他の使用法とは異なり、シャドウコピーではありません(BIOSコードをROMから実行する代わりにRAMにシャドウイングするなど)。/ etc / passwdのフィールドはプレースホルダーで、「実際のパスワードハッシュは/ etc / shadowにあります」という意味の特殊文字を含んでいます。
ピーターコーデス

良い歴史だが、1秒。1パスワードあたりの上限は1980年代でもほとんど制限されていませんでした。トップパスワードがそれぞれ1%を超える人々によって使用されたときではありませんでした。
ウォーレンデュー

1
@WarrenDew事実や意見を述べているかどうかはわかりません。crypt()には、8バイトのパスワード用の12ビットのソルトと12 + 64ビットの出力があります(一般的にはbase64エンコード)。共通パスワードのために、はい、あなたはおそらくブルートフォースによってそれらを攻撃することができ、それはかかりませんでしたこと、すべてのパスワードチェックが第二を取った場合、ブルートフォース実行不可能で割れ作るためにパスワードの多くを。1つのパスワードでもソルトテーブルを事前計算すると、1秒あたり1暗号化のレートで1時間程度かかり、さらに、限られたストレージ(当時は40〜80 MBが多かった)と競合する必要がありました。
CVn

@PeterCordes良い点。OPの質問への回答に特に関係がないため、この文章を削除しています。
CVn

10

/ etc / shadowファイルの許可が600に設定されているのはなぜですか?

誰があなたにそれを言ったの?

$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
  • 640です。

簡単な答え:Linuxの許可は真剣に受け止められます。「他の人」がで何かをする理由はありません/etc/shadow。そして、グループ「シャドウ」がそれに書き込む理由はありません。そして、実行は順不同です。

ただし、内部のすべてのパスワードはクリアテキストではなくハッシュとして保存されるため(ハッシュから元のパスワードを計算することは不可能です)、なぜ誰もが読み取れないのでしょうか?

その理由は1つだけではないからです。

ハッシュは一方向です。誰かに読み取りアクセスを許可すると、スクリプトを使用してこの一方向を悪用することができます。想像できる任意の単語をリストし、ハッシュを作成するだけです。ある時点で、パスワードと一致する場合があります。ただし、しばらく時間がかかる場合もあります。

この答え は興味深いものであり、ブルートフォーシングに関する推定値があります。


640は一般ユーザー向けですか?? グループユーザーはシャドウファイルを読むことができますか??
シュバンシュフヴィシュワカルマ

ごめんなさい?ファイルは640です。したがって、読み取りはユーザー「root」に対して書き込み、グループ「shadow」に対して読み取ります。「シャドウ」は、この特定の目的のために特権システムが作成したグループです。
リンツウィンド

2

重要な背景:/etc/shadowパスワードハッシュを非表示にするためだけに存在します。Unixの初期の頃、パスワードハッシュはに保存されていました/etc/passwd。コンピュータがより強力になり、ネットワーク接続がより永続的になり、セキュリティの悪用がより洗練されたため、パスワードハッシュを単語が読める状態に保つことが問題を求めていることに気付きました。(エクスプロイトの詳細は説明しません。これについては十分な答えが既にあります。)

しかし/etc/passwd、読み取り保護することはできませんでした:数値のユーザーIDをユーザー名にマップし、ホームディレクトリ、デフォルトのシェル、ユーザーのフルネーム(およびオフィス番号などman finger)を検索するために、あらゆる種類のプログラムで使用されます-check out ) 。そのため、機密部分であるパスワードハッシュはに移動され/etc/shadow、残りはそのまま残りました。そのため/etc/passwd、名前を軽deし、(ハッシュ化された)パスワード以外のすべて含みます。


私の質問に対する回答をありがとう、今/ etc / passwdと/ etc / shadowファイルの完全なアイデアを得ました。
シュバンシュンヴィシュワカルマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.