chpasswd dan openssl

3

Saya mencoba meneruskan kata sandi MD5 ke chpasswd tetapi sepertinya tidak berhasil.

echo username:$(openssl passwd -1 -salt salt password)

Lalu saya mencoba meneruskan ini chpasswduntuk mengubah kata sandi

echo 'username:$1$salt$aldkjflsfj' | /usr/sbin/chpasswd -e

Namun, ketika saya melakukan ini, perubahan kata sandi tampaknya tidak berpengaruh - /etc/shadowdiperbarui tetapi jika saya mencoba menggunakan kata sandi itu tidak berfungsi.

Ini berhasil:

echo username:password | /usr/sbin/chpasswd

passwd juga berfungsi

Info lebih lanjut:

$ 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:::
에이 바
sumber
1
Mencoba di sini menggunakan echo foo:$(openssl passwd -1 -salt salt password) | chpasswd -edan berfungsi dengan baik ketika saya kemudian mencoba masuk sebagai foo. Layak memposting entri bayangan sebelum dan sesudah?
steve
@ Greve Ketika saya melakukannya dalam satu tembakan seperti itu berfungsi, tetapi jika saya melakukannya pada langkah-langkah yang ditunjukkan di atas tidak. Apa bedanya?
에이 바
@chaos lihat bagian info selengkapnya, seperti dikutip.
에이 바
Ya saya melihat, perlu tanda kutip ganda pada generasi hass openssl. Jika Anda menulis jawaban saya akan menerimanya. Terima kasih.
에이 바

Jawaban:

2

Argumen harus dikutip, jika shell memvalidasi karakter khusus di dalam argumen itu:

echo "username:"$(openssl passwd -1 -salt "$salt" "$password")

Gunakan kutipan ganda di sini, bahwa shell mengevaluasi variabel.

Sekarang, echoperintahnya harus dikutip juga:

echo 'username:$1$salt$aldkjflsfj' | ...

Gunakan tanda kutip tunggal di sini, karena $ -signs adalah bagian dari entri dan harus tetap ada.


Peringatan : Saya tidak merekomendasikan untuk mengubah kata sandi seperti ini. Perintah-perintah itu, dan karenanya kata sandi polos, dapat dilihat pada daftar psdan topmisalnya. opensslmemiliki mekanisme untuk kasus tersebut, untuk membaca kata sandi dari file.

kekacauan
sumber