Saya sengaja menemukan masalah ini ketika mencoba membuat pengguna FTP baru untuk vsftpd. Setelah membuat pengguna baru dengan perintah berikut dan mencoba masuk dengan FileZilla, saya akan mendapatkan kesalahan "kata sandi salah".
useradd f -p pass -d /home/f -s /bin/false
Setelah melakukan ini, / etc / shadow mengandung
f:pass:1111:0:99:2:::
Setelah saya menjalankan perintah berikut dan memberikan pass pass yang sama
passwd f
/ etc / shadow mengandung
f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::
Tampaknya enkripsi terjadi ketika saya menjalankan passwd , tetapi tidak pada useradd
Yang penting setelah melakukan ini, saya bisa masuk ke FTP dengan kredensial yang sama persis.
Saya menggunakan CentOS 5.11, vsftpd untuk FTP, dan FileZilla untuk Akses FTP
/ var / log / secure berisi:
Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false
Mengapa tidak berfungsi saat saya beralih -p pass
ke useradd? Apa yang harus saya lakukan untuk membuatnya bekerja?
/var/log/secure
$1$
menunjukkan MD5 digunakan . MD5, meskipun tidak terlalu buruk untuk kata sandi, agak lemah saat ini. Ini adalah pertanyaan yang sepenuhnya terpisah, tetapi saya benar-benar mendesak Anda untuk mempertimbangkan bermigrasi ke fungsi hash yang lebih kuat./etc/shadow
tidak dienkripsi tetapi di-hashJawaban:
Itu berfungsi sebagaimana dimaksud. Jika Anda ingin mengatur kata sandi menggunakan
useradd
perintah, Anda harus memberikan versi kata sandi yang di-hashuseradd
.String
pass
memang memenuhi kriteria format untuk bidang kata sandi hash/etc/shadow
, tetapi tidak ada kata sandi yang sebenarnya hash ke string itu. Hasilnya adalah bahwa untuk semua maksud dan tujuan, akun itu akan berperilaku seperti memiliki kata sandi, tetapi kata sandi apa pun yang Anda coba gunakan untuk mengaksesnya akan ditolak karena bukan kata sandi yang benar.Lihat
man useradd
atau dokumentasi useradd :sumber
man
useradd :Anda seharusnya memberikan kata sandi yang hash.
Bukan kata sandi plaintext.
sumber
useradd
mengharapkan Anda untuk memberikannya kata sandi, bukan kata sandi itu sendiri. Anda dapat menggunakan variasi berikut pada perintah Anda untuk memberikan kata sandi hash keuseradd
perintah:Untuk mengetahui metode yang tersedia, gunakan:
Untuk menghindari melewatkan kata sandi pada baris perintah, masukkan kata sandi dalam file (menggunakan editor dan tidak menggunakan
echo
atau serupa) dan lakukan ini:Ini akan melewatkan kata sandi hash di baris perintah, tetapi bukan yang plaintext.
mkpasswd
datang denganexpect
paket.sumber
passwd
untuk mengubahnya menjadi sesuatu yang lain ......