getpwnam()을 사용하여 /etc/shadow에서 해시된 비밀번호를 얻는 방법은 무엇입니까?

getpwnam()을 사용하여 /etc/shadow에서 해시된 비밀번호를 얻는 방법은 무엇입니까?

분명히 기능이 있습니다 (비밀번호 가져오기/etc/passwd), 사용자 이름이 주어지면 해당 사용자에 대한 기타 세부 정보(셸, uid, gid 등) 와 함께 해당 항목을 반환합니다 .

/etc/shadow그런데 이 기능을 섀도우 패스워드 파일( )과 함께 작동하게 하는 방법을 모르겠습니다 . 가능합니까? 응용 프로그램은 root.

답변1

섀도우 비밀번호 파일의 요점은 다음과 같습니다.getpwnam 아니요그것에서 비밀번호를 반환하십시오. 당신은 볼 필요가man 3 shadow그리고getspnam특히.

답변2

이는 두 가지 이유로 불가능합니다.

  • 섀도우 파일은 최신 시스템의 인증 방법입니다. 이들 중 일부는 실제 비밀번호를 전혀 포함하지 않습니다. 사용자가 지문을 통해 인증하는 경우 무엇을 반환해야 합니까? 왜 응용 프로그램이 중단됩니까?
  • 루트가 아닌 애플리케이션에 해시된 문자열을 제공하면 오프라인 공격이 가능해집니다.

어쨌든 구조가 그렇게 복잡하지 않은 시스템별 파일이므로 필요하다면 직접 파서를 작성할 수 있습니다.

관련 정보