Galat, bahkan dengan sudo: "dd: gagal membuka '/ dev / sda1': Izin ditolak" (input dd disalurkan dari gzip)

14

Perintah saya yang tidak berfungsi :

sudo gzip -dc sda1.image.gz | dd of=/dev/sda1

mengembalikan kesalahan berikut bahkan sebelum saya sempat memasukkan kata sandi:

dd: failed to open ‘/dev/sda1’: Permission denied
[sudo] password for ken:

Saya juga sudah mencoba tanpa opsi "-dc" dan mendapatkan kesalahan yang sama.

Namun, perintah dd tanpa gzip, menggunakan file yang tidak dikompresi, berfungsi :

sudo dd if=sda1.image of=/dev/sda1

Sepertinya sudo hanya berlaku untuk perintah pertama dan bukan seluruh urutan perintah. Jika saya tetap berada di sesi terminal yang sama dan mengulangi perintah, saya tidak mendapatkan prompt kata sandi (otentikasi saya tampaknya tetap ada) namun saya masih mendapatkan kesalahan yang sama (seolah-olah otentikasi saya tidak berlaku untuk operasi / dev write ). Kesalahan yang sama terjadi ketika dijalankan dari skrip / bin / sh.

Bagaimana saya harus membuat perintah untuk mengompres gambar saya ke perangkat?

Saya menggunakan Ubuntu 14.04 LTS di jendela terminal.

Ken Conrad
sumber

Jawaban:

17

Anda hilang sudodi sisi lain pipa:

sudo gzip -dc sda1.image.gz | sudo dd of=/dev/sda1

Dalam <command> | <command> | [...]format perintah, setiap perintah dari pipeline yang membutuhkan sudoharus dijalankan menggunakan sudo, bukan hanya yang pertama.

Dalam hal ini Anda mungkin tidak perlu menggunakan sudopada gzip -dc sda1.image.gz, kecuali jika Anda tidak memiliki izin membaca pada file:

gzip -dc sda1.image.gz | sudo dd of=/dev/sda1

Secara umum, jika semua perintah yang harus dijalankan dalam sebuah pipeline memerlukan sudo, salah satu cara untuk menulis sudodi setiap perintah adalah dengan menjalankan seluruh perintah dalam sebuah subkulit yang dipanggil menggunakan sudo:

sudo bash -c '<command> | <command> | [...]'
kos
sumber
3
@KenConrad Jika jawaban ini menyelesaikan masalah Anda, harap tandai sebagai jawaban yang diterima dengan mengeklik pada tanda di bawah jumlah upvotes, sehingga pengguna lain dapat mengetahui bahwa jawaban ini cocok untuk Anda dan mungkin juga mendapat untung darinya.
kos