Script htdigest -c / path / ke / file / $ user $ user $ kata sandi di Bash


8

Saya ingin dapat skrip dengan kata sandi dalam variabel $ kata sandi.

htdigest -c /etc/apache2/pw/$user $user $password

Saat ini ia meminta saya untuk memasukkan kata sandi secara manual; ini tidak akan mungkin karena ini akan menjadi pengaturan otomatis oleh skrip PHP. Bisakah seseorang tolong tunjukkan saya cara membuat skrip ini? Atau fungsi skrip yang setara?

Jawaban:


9

Lihat /programming/645659/how-do-you-htdigest-400-user-accounts

Metode termudah, berdasarkan pada salah satu saran dalam jawaban yang dipilih, mungkin ini:

digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" | 
           md5sum | awk '{print $1}' )"

printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"

Saya telah menggunakan md5sumGNU coreutils dan awkbukan hanya md5karena itu yang telah saya instal pada sistem saya dan saya tidak dapat menemukan paket mana yang berisi /usr/bin/md5- Anda juga dapat menggunakan sha512sumatau program hashing lainnya.

mis. jika pengguna = foo , realm = bar , dan kata sandi = baz maka perintah di atas akan menghasilkan:

foo:bar:5bf2a4095f681d1c674655a55af66c5a

htdigest tidak melakukan sesuatu yang ajaib atau bahkan tidak biasa - itu hanya menampilkan pengguna, ranah, dan kata sandi dalam format yang tepat ... seperti yang dilakukan perintah di atas.

Menghapus intisari untuk pengguna yang diberikan: ranah alih-alih hanya menambahkan satu, dapat dengan mudah dilakukan dengan sed.

sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"

Dan memperbarui / mengubah intisari untuk pengguna: ranah juga dapat dilakukan dengan kombinasi dengan metode di atas untuk menghasilkan garis intisari. misalnya

digest="$( printf "%s:%s:%s" "$user" "$realm" "$new_password" | 
           md5sum | awk '{print $1}' )"

sed -i -e "/^$user:$realm:/ c$user:$realm:$digest" "/etc/apache2/pw/$user"

luar biasa: P memiliki beberapa masalah ketika file belum ada, jadi saya membuat file sebelum menjalankan ini: o
Mr. King

0

Periksa fungsi 'proc_open' di PHP http://fr.php.net/manual/en/function.proc-open.php

Anda dapat menjalankan htdigest dengan opsi Anda, lalu mengirimkan kata sandi baru ke pipa.

Anda mungkin dapat menemukan / membuat fungsi PHP yang melakukan pekerjaan paling tinggi. Seharusnya lebih mudah daripada menggunakan proc_open ...


ini jauh lebih kompleks daripada hanya membuat pengguna apache baru: p menggunakan php bukan pilihan
Tn. King
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.