回答:
TL; DR:いいえ、パスワードは(一般に)回復できないハッシュとして保存されます。
Linuxは、デフォルトではプレーンテキストのパスワードをどこにも保存しません。それらは、さまざまなアルゴリズムによってハッシュ化または暗号化されます。したがって、一般的にいや、これは保存されたデータでは不可能です。
/etc/passwd
データベース以外の場所にパスワードを保存している場合、これを可能にする方法で保存される場合があります。 htpasswd
ファイルには暗号化されたパスワードが含まれる可能性があり、他のアプリケーションはさまざまな(通常は悪い)理由でより弱いハッシュまたはプレーンテキストパスワードを保存する場合があります。
また、ユーザー構成ファイルには、さまざまな理由で、暗号化されていないパスワードまたは脆弱な保護パスワード.netrc
が含まれている場合があります。
パスワードが古い、弱いアルゴリズム(3DES、MD5)でハッシュ化または暗号化されている場合、変換を単に元に戻すのではなく、データを攻撃することにより、パスワードを合理的/安価に解決することができます。(例:http : //project-rainbowcrack.com/やhttp://www.openwall.com/john/など)
rootであるため、別のレベルでユーザーパスワードを攻撃することもできます。ログインバイナリ、sudo、またはPAMの一部などを、入力時にパスワードをキャプチャするものに置き換えます。
そのため、特にそうではありませんが、一般にルートアクセスを持っていると、さまざまなサイドチャネルを介してユーザーの詳細を取得しやすくなります。
ここでの他のいくつかの答えとは対照的に、これと、「ルートがあれば」で終わる他の多くの質問に対する簡単な答えはYESです。
基本的に、rootはシステム自体が実行できるマシン上で何でも実行できます。システムはパスワードを受け入れることができるので、rootは十分な労力でパスワードまたは自分の代わりに自分のパスワードを受け入れることができます。さらに重要なことは、彼は単にパスワードを変更するか、あなたに代わることができます。
具体的には、パスワードは通常暗号化されます。これは通常、いわゆる「一方向」アルゴリズムの一種であり、パスワードをチェックするために使用できる番号(ハッシュ)を生成しますが、通常は番号を逆にしてパスワードを元に戻すことはしません。だから、誰かのパスワードを取得するためにファイルを読むだけの問題ではありません。
つまり、シェル履歴とログイン履歴を読むことができます。ログイン履歴では、ある時点でユーザー名の代わりにパスワードを入力したか、パスワードプロンプトではなくシェルに入力した可能性があります。その場合、プレーンテキストである必要があります。これはテキストベースの端末では非常に一般的であり、私が知っている良い解決策はありません。
ただし、その問題を別としても、「一方向」の暗号化は実際には一方向ではありません。パスフレーズの多くの組み合わせを通過し、一致するものを見つけるまで、同じ一方向プロセスでそれらを暗号化するツールがたくさんあります。その後、彼らはアクセスするパスワードを知っています(rootであるにもかかわらず、そのマシン上ですでにアクセス権を持っています)。
さらに悪いことに、上記のプロセスに対する事前に計算された答えであるレインボーテーブルがあります。人々は、指定された暗号化されたパスワードから元のパスワードをすでに生成しています。これらを使用すると、単純な検索であり、時間のかかるクラッキングの試みは必要ありません。
繰り返しますが、ルートレベルのアクセスは保護するものです。侵害されると、マシン全体とその上のすべてが侵害されます。あなたのビジネスが彼らのプライバシーを保護するためにもはや信頼できないことをすべてのユーザーに知らせることを含めて、最初からやり直す時です。そして、はい、それは廃業を意味する可能性があります。
すべてのパスワードは/etc/shadow
ファイルに保存されます。rootアクセスを使用してこのファイルを開きhash value
、各ユーザー(rootユーザーを含む)のこれらのパスワードを確認できます。
何らかの種類のパスワード解読ソフトウェアがない限り、これらのハッシュ値を通常のテキストに戻すことはできません。
ただし、rootユーザーにアクセスできる場合でも、次のコマンドを使用してアカウントにアクセスすることにより、通常のユーザーのパスワードを変更できます。
root@localhost$ passwd pradeep
これにより、userに設定する新しいパスワードを尋ねられますpradeep
。このようにして、pradeepのpasswdを変更できます。
これで、次の方法で彼のアカウントからアクセスできます。
root@localhost$ su pradeep
これにより、pradeepユーザーに切り替えられ、次のような端末が表示されます。
pradeep@localhost$