Saya perlu mengedit secara manual /etc/shadow
untuk mengubah kata sandi root di dalam gambar mesin virtual.
Apakah ada alat baris perintah yang mengambil kata sandi dan menghasilkan /etc/shadow
hash kata sandi yang kompatibel pada standar keluar?
Anda dapat menggunakan perintah berikut untuk hal yang sama:
openssl passwd -6 -salt xyz yourpass
Catatan: passing -1
akan menghasilkan kata sandi MD5, -5
SHA256 dan -6
SHA512 (direkomendasikan)
mkpasswd --method=SHA-512 --stdin
Metode menerima md5
, sha-256
dansha-512
Seperti yang disarankan @tink, kami dapat memperbarui kata sandi chpasswd
menggunakan:
echo "username:password" | chpasswd
Atau Anda dapat menggunakan kata sandi terenkripsi dengan chpasswd
. Pertama buat menggunakan ini:
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
Kemudian, Anda dapat menggunakan kata sandi yang dihasilkan untuk memperbarui:
echo "username:encryptedPassWd" | chpasswd -e
Kata sandi terenkripsi ini dapat kita gunakan untuk membuat pengguna baru dengan kata sandi, misalnya:
useradd -p 'encryptedPassWd' username
chpasswd -e
, pastikan untuk menggunakan tanda kutip tunggal pada string yang Anda gunakanecho
; jika tidak, jika ada$
atau karakter khusus lainnya, mereka tidak akan diperlakukan secara harfiah.openssl passwd -1
yang 1) tidak berakhir di sana dan 2) menghasilkan garam acak untuk Anda (yang tidak berakhir dalam sejarah shell, juga).openssl passwd
dokumentasi untuk siapa pun yang mencoba mencari tahu apa yang dilakukan-1
opsi.python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
- dari pertanyaan terkait ServerFaultDi Ubuntu 12.04, ada mkpasswd (dari paket whois): Frontfender berlebih hingga crypt (3)
Dimana:
-m
= Hitung kata sandi menggunakan metode TYPE. Jika TYPE membantu, maka metode yang tersedia akan dicetak.-S
= garam yang digunakan.Misalnya
sumber
Solusi ini memiliki manfaat sebagai berikut:
Meminta kembali kata sandi untuk menghindari kesalahan.
Referensi
sumber
Bagi yang tanpa sistem berbasis Debian. Python3 juga berfungsi dengan baik.
CATATAN: String "test" adalah kata sandi yang kami hasilkan sebagai string yang disandikan.
sumber
crypt.mksalt
tidak berfungsi saat membuat kata sandi untuk/etc/shadow
. Tapi metode @ Alex131089 berhasil!openssl
merupakan alat yang cukup universal.Tidak satu pun dari metode saat ini yang dapat diterima oleh saya - Mereka baik melewati kata sandi pada baris perintah (yang berakhir dalam sejarah shell saya), memerlukan instalasi utilitas tambahan (
python3
,makepasswd
), menggunakan garam kode keras atau menggunakan teknik hashing lama.Metode ini akan menghasilkan hash SHA-512 setelah meminta kata sandi dan akan menggunakan garam acak.
Metode yang menggunakan Python 2 tanpa pustaka non-standar:
Untuk melakukannya tanpa prompt: (Ini akan meninggalkan kata sandi Anda dalam sejarah perintah)
sumber
ps
output dalam sepersekian detik bahwa perintah sedang berjalan. (Tetap paling aman untuk menggunakan versi yang meminta kata sandi)The
openssl
danchpasswd -e
pasangan tidak bekerja dalam kasus saya di RHEL6. Menggabungkanopenssl passwd
danusermod -p
memerintahkan melakukan pekerjaan.Hasilkan nilai hash kata sandi bersama dengan nilai garam:
Kemudian, salin string terenkripsi ke usermod. Pastikan untuk membungkusnya dengan tanda kutip tunggal.
Lihat dalam file bayangan.
sumber
Namun metode lain untuk menghasilkan kata sandi, menggunakan
openssl
alat.Hasilkan kata sandi MD5
Hasilkan kata sandi DES
sumber
Memperluas sedikit pada kritik u150825 dan Gert van den Berg, saya menemukan diri saya membutuhkan sesuatu yang relatif fleksibel untuk situasi yang berbeda dengan sistem otomasi yang berbeda. Saya memutuskan untuk menambah perpustakaan kecil saya yang berisi skrip yang berguna dan menulis ini. Hanya menggunakan pustaka asli dari python 2.7+, dan bekerja di python3 juga.
Anda dapat mengambilnya di sini jika mau. Sama mudahnya untuk menjatuhkan ini di lingkungan Anda jika Anda perlu sering menggunakannya, http-host atau apa pun, dan Anda dapat menjalankannya pada platform apa pun menggunakan apa pun penerjemah python default yang tersedia untuk Anda, cukup andal mengandalkannya bekerja.
Ini default untuk meminta menggunakan getpass dengan meminta pada stderr (memungkinkan penangkapan stdout mudah), tetapi jika Anda menyalurkan string ke sana, ia hanya akan menuai dari stdin. Bergantung pada bagaimana Anda melakukan ini, itu mungkin tidak muncul dalam sejarah perintah, jadi, sadarilah apa yang sedang Anda kerjakan. Saya suka memiliki alat yang fleksibel yang akan berperilaku dengan cara yang diharapkan, daripada harus bergantung pada paket atau python satu-baris cara saya untuk kemenangan 10 cara yang berbeda.
sumber
chpasswd
?