Bagaimana cara membuat 'sudo' ambil kata sandi dari file?

13

Saya ingin menjalankan perintah yang memerlukan kata sandi sudo:

sudo apt-get update

Bukankah ini seharusnya berfungsi (Saya telah menyimpan kata sandi dalam file teks biasa passwd.txt):

sudo apt-get update <~/passwd.txt

Ini adalah logika saya mengapa itu HARUS bekerja: ketika kata sandi diperlukan, pengguna diminta untuk memasukkan kata sandi dari keyboard. Tetapi mengarahkan stdinuntuk membaca dari passwd.txtfile harus bekerja.

Bukan?

MichaelB
sumber
Anda biasanya akan menggunakan expectskrip tcl untuk mengotomatisasi hal-hal seperti itu.
Adobe
Jika Anda perlu bertanya ini, Anda mungkin melakukan sesuatu yang salah. Bisakah Anda membagikan apa yang ingin Anda capai? Seseorang seharusnya tidak perlu menggunakan peretasan seperti ini. Ini indikasi bahwa harus ada solusi yang lebih baik.
gertvdijk
@ gertvdijk Saya bukan ahli ubuntu tapi saya sedang belajar. Saya memberikan ini pada diri saya sebagai latihan: "Jalankan perintah dalam Bash Script yang membutuhkan hak istimewa sudo hanya menggunakan pengetahuan yang saya miliki saat ini. Tanpa menggunakan Google." Saya datang dengan jawaban di atas dan saya pikir itu harus berhasil. Saya menemukan solusi yang lebih baik dan lebih aman di AskUbuntu nanti.
MichaelB

Jawaban:

27

sudostdinsecara default tidak membaca kata sandi . Dari sudohalaman manual:

-S  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
    The password must be followed by a newline character.

Jadi, Anda harus menjalankan:

sudo -S apt-get update <~/passwd.txt

Ingatlah bahwa menyimpan kata sandi dalam file bukanlah praktik yang baik. Anda harus membaca:

Eric Carvalho
sumber
Dimengerti! Pendek dan jawaban yang manis!
MichaelB