chpasswd 및 openssl

chpasswd 및 openssl

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파일에서 비밀번호를 읽는 이러한 상황에 대한 메커니즘이 있습니다.

관련 정보