web-dev-qa-db-ja.com

getpwnam()を使用して/ etc / shadowでハッシュされたパスワードを取得するにはどうすればよいですか?

どうやら、ユーザー名を指定すると、そのユーザーの他の詳細(シェル、uid、gidなど)とともに/etc/passwdに適切なエントリを返す関数( getpwnam )があります。

ただし、その関数をシャドウパスワードファイル(/etc/shadow)で機能させる方法がわかりません。これは可能ですか?アプリケーションはrootとして実行されます。

2
Nathan Osman

シャドウパスワードファイルの要点は、getpwnamはパスワードを返さないということです。あなたは見る必要があります man 3 shadow および getspnam 特に。

8
cjm

それは2つの理由のために不可能です:

  • シャドウファイルは、最新のシステムでの認証方法の1つです。それらのいくつかは実際のパスワードをまったく含まない-ユーザーが指紋によって認証された場合、何を返す必要がありますか?なぜそれはアプリケーションを壊す必要がありますか?
  • ルート以外のアプリケーションにハッシュ文字列を与えると、オフライン攻撃が可能になります。

とにかくシステム固有のファイルであり、それほど複雑な構造はないので、必要に応じて独自のパーサーを作成できます。

3