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:::

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.