Saya mencari (1) cara paling aman dan (2) paling sederhana untuk meminta pengguna mengetikkan kata sandi di bash shell prompt dan menjadikan kata sandi itu menjadi bagian dari stdin ke suatu program.
Ini adalah apa yang perlu stdin terlihat seperti:, di {"username":"myname","password":"<my-password>"}
mana <my-password>
apa yang diketikkan ke prompt shell. Jika saya memiliki kendali atas program stdin, maka saya bisa memodifikasinya untuk secara aman meminta kata sandi dan meletakkannya, tetapi downstream adalah perintah tujuan umum standar.
Saya telah mempertimbangkan dan menolak pendekatan yang menggunakan yang berikut:
- pengguna mengetik kata sandi ke dalam baris perintah: kata sandi akan ditampilkan di layar dan juga akan terlihat oleh semua pengguna melalui "ps"
- interpolasi variabel shell menjadi argumen ke program eksternal (misalnya,
...$PASSWORD...
): kata sandi masih akan terlihat oleh semua pengguna melalui "ps" - variabel lingkungan (jika dibiarkan di lingkungan): kata sandi akan terlihat oleh semua proses anak; bahkan proses yang dapat dipercaya dapat mengekspos kata sandi jika mereka membuang inti atau membuang variabel lingkungan sebagai bagian dari diagnostik
- kata sandi yang tersimpan dalam file untuk waktu yang lama, bahkan file dengan izin ketat: pengguna dapat secara tidak sengaja mengekspos kata sandi dan pengguna root mungkin secara tidak sengaja melihat kata sandi
Saya akan meletakkan solusi saya saat ini sebagai jawaban di bawah, tetapi dengan senang hati akan memilih jawaban yang lebih baik jika seseorang datang dengan satu. Saya pikir harus ada sesuatu yang lebih sederhana atau mungkin seseorang melihat masalah keamanan yang saya lewatkan.