MD5 비밀번호를 chpasswd에 전달하려고 하는데 작동하지 않는 것 같습니다.
echo username:$(openssl passwd -1 -salt salt password)
chpasswd
그런 다음 비밀번호를 변경하기 위해 전달하려고했습니다.
echo 'username:$1$salt$aldkjflsfj' | /usr/sbin/chpasswd -e
그런데 이렇게 하면 비밀번호 변경이 적용되지 않는 것 같습니다. /etc/shadow
업데이트되었지만 비밀번호를 사용하려고 하면 작동하지 않습니다.
이것은 작동합니다:
echo username:password | /usr/sbin/chpasswd
passwd
또한 유효합니다
추가 정보:
$ S=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1)
$ echo username:$(openssl passwd -1 -salt "$S" password)
username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/
$ echo 'username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/' | chpasswd -e
$ grep username /etc/shadow
username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/:16722:0:99999:7:::
답변1
매개변수는 인용되어야 합니다. 그렇지 않으면 쉘이 확인합니다.특수 문자다음 매개변수 중:
echo "username:"$(openssl passwd -1 -salt "$salt" "$password")
쉘이 변수를 평가하도록 하려면 여기에 큰따옴표를 사용하십시오.
이제 echo
명령도 인용되어야 합니다.
echo 'username:$1$salt$aldkjflsfj' | ...
$ 기호는 항목의 일부이고 유지되어야 하므로 여기서는 작은따옴표를 사용합니다.
경고하다: 비밀번호를 이렇게 변경하는 것은 권장하지 않습니다. 이러한 명령은 일반 텍스트 비밀번호와 함께 ps
및 목록에서 볼 수 있습니다 top
. openssl
파일에서 비밀번호를 읽는 이러한 상황에 대한 메커니즘이 있습니다.