나는 무엇보다도 비밀번호 프롬프트와 상호 작용할 필요 없이(즉, 자동으로 비밀번호를 입력하지 않고도) 사용자로 "로그인"하는(가능한 경우 su를 사용하는 것이 좋음) bash 스크립트를 작성하려고 합니다. 명령을 실행하고 세션이 종료되는 데만 필요합니다.
이것은 제가 가르치고 있는 Linux 입문 과정을 위한 "자동 검사기"입니다. 학생들은 Raspberry Pi(Raspbian 실행)에서 특정 비밀번호를 사용하여 사용자 이름을 만드는 연습을 하고 있으며 이 스크립트를 통해 비밀번호가 올바른지 자동으로 확인하고 싶습니다. 학생들은 Pis에서 "자동 검사기"를 실행하고 출력을 확인하므로 제출하기 전에 오류를 수정할 수 있습니다. 이것은 더미 비밀번호를 사용하는 교실 연습이기 때문에 해당 비밀번호의 보안은 전혀 관련이 없습니다.
자동 로그인에 관해 몇 가지 질문이 있다는 것을 알고 있지만 그 중 어느 것도 제게 도움이 되지 않았습니다. 내가 가진 가장 가까운 해결책은 su 명령을 사용하여 터미널이 필요하다는 것이었습니다. "expect"를 사용하려면 학생의 Pi에 패키지를 설치해야 하므로 작동하지 않습니다.
비밀번호가 올바른지 확인할 수 있는 다른 방법이 있다면 그 방법을 사용하겠습니다. 솔트 때문에 해시된 비밀번호 비교를 할 수 없을 것 같습니다.
답변1
루트가 있는 경우:
salt=$(awk -F\$ '$1 ~ /student:/ { print $3 }' /etc/shadow)
hashedpasswd=$(awk -F: '$1 == "student" { print $2} ' /etc/shadow)
expected=$(mkpasswd -m sha-512 given-passwd $salt)
if [ "$hashedpasswd" = "expected" ]
then
echo good
else
echo bad
fi
student
물론 관련 문자열로 교체하십시오.given-passwd
또한 교체되었습니다.
자세한 내용은 내 질문을 참조하십시오./etc/shadow : $6$ 암호화된 비밀번호를 생성하는 방법은 무엇입니까?