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 chpasswd
untuk mengubah kata sandi
echo 'username:$1$salt$aldkjflsfj' | /usr/sbin/chpasswd -e
Namun, ketika saya melakukan ini, perubahan kata sandi tampaknya tidak berpengaruh - /etc/shadow
diperbarui 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:::
echo foo:$(openssl passwd -1 -salt salt password) | chpasswd -e
dan berfungsi dengan baik ketika saya kemudian mencoba masuk sebagai foo. Layak memposting entri bayangan sebelum dan sesudah?Jawaban:
Argumen harus dikutip, jika shell memvalidasi karakter khusus di dalam argumen itu:
Gunakan kutipan ganda di sini, bahwa shell mengevaluasi variabel.
Sekarang,
echo
perintahnya harus dikutip juga: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
ps
dantop
misalnya.openssl
memiliki mekanisme untuk kasus tersebut, untuk membaca kata sandi dari file.sumber