getpwnam() を使って /etc/shadow からハッシュされたパスワードを取得するには?

getpwnam() を使って /etc/shadow からハッシュされたパスワードを取得するには?

明らかに機能があります(パスワードを取得/etc/passwd)、ユーザー名が与えられると、そのユーザーに関するその他の詳細(シェル、uid、gidなど)と一緒にその項目が返されます。

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

答え1

シャドウパスワードファイルのポイントは次のとおりです。getpwnam いいえそれからパスワードを返します。あなたは見る必要がありますman 3 shadowそしてgetspnam特に。

答え2

これは2つの理由で不可能です。

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

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

関連情報