Setel HISTIGNORE ke " sudo -S "
$ export HISTIGNORE='*sudo -S*'
Kemudian berikan kata sandi Anda dengan aman ke sudo:
$ echo "your_password" | sudo -S -k <command>
"HISTIGNORE" berarti tidak menyimpan perintah ini ke dalam sejarah. Itu adalah sejarah dalam memori atau file "~ / .bash_history".
Misalnya, di bawah ini akan dengan aman menyalurkan kata sandi Anda ke perintah sudo, tanpa mempertahankan riwayat kata sandi Anda.
"-S", artinya menggunakan stdin untuk kata sandi,
"-K" berarti mengabaikan kredensial yang di-cache untuk memaksa sudo untuk selalu bertanya. Ini untuk perilaku yang konsisten.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
Kelemahan dari metode di atas adalah bahwa jika Anda ingin melihat perintah yang Anda jalankan dalam sejarah nanti mereka tidak akan ada di sana. Metode lain adalah memperbarui cache kredensial otentikasi sudo (default diaktifkan dengan batas waktu 5 menit), lalu jalankan sudo secara terpisah. Tetapi kekurangannya adalah Anda harus mengetahui cache 5 menit.
Sebagai contoh:
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
Catatan saya menjalankan sudo sebelum setiap perintah untuk memastikan bahwa cache sudo diperbarui, karena defaultnya adalah 5 mintues. Ya, whoami seharusnya tidak memakan waktu 5 menit, tetapi saya pikir sebaiknya dijalankan sebelum setiap perintah untuk konsistensi. Anda juga dapat memasukkan "export HISTIGNORE = ' sudo -S'"di file ~ / .bashrc Anda, lalu muat dengan". ~ / .bashrc "atau logoff lalu login. Namun, saya berpikir untuk menggunakan ini untuk tujuan skrip, jadi saya akan menyimpannya di bagian atas semua skrip saya untuk praktik keamanan terbaik. Mengatur" echo "" | sudo -S -v "ke variabel sebagai gantinya mungkin juga merupakan ide yang baik, kemudian jalankan saja variabel sebelum setiap perintah yang membutuhkan hak akses root, lihat komentar Janar." Komentar John T "juga harus menyertakan parameter" -k " , seolah-olah Anda menjalankan "sudo -S" tanpa "-k" dan cache otentikasi sudo sudah memiliki kredensial Anda (dan masih valid, cache otentikasi sudo default adalah 5 menit) maka bash akan menjalankan kata sandi Anda sebagai perintah sebagai gantinya, yaitu buruk.
halt
menjalankannya sebagai root.