ข้อผิดพลาดแม้จะมี sudo:“ dd: ล้มเหลวในการเปิด '/ dev / sda1': การอนุญาตถูกปฏิเสธ "(อินพุต dd ถูกส่งจาก gzip)


15

คำสั่งของฉันซึ่งไม่ทำงาน :

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

ส่งคืนข้อผิดพลาดต่อไปนี้ก่อนที่ฉันจะมีโอกาสป้อนรหัสผ่าน:

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

ฉันได้ลองโดยไม่มีตัวเลือก "-dc" และได้รับข้อผิดพลาดเดียวกัน

อย่างไรก็ตามคำสั่ง dd โดยไม่มี gzip โดยใช้ไฟล์ที่ไม่มีการบีบอัดใช้งานได้ :

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

ดูเหมือนว่า sudo จะใช้กับคำสั่งแรกเท่านั้นไม่ใช่ลำดับทั้งหมด ถ้าฉันยังคงอยู่ในเซสชันเทอร์มินัลเดียวกันและทำซ้ำคำสั่งฉันจะไม่ได้รับพรอมต์รหัสผ่าน (การตรวจสอบสิทธิ์ของฉันดูเหมือนจะยังคงอยู่) และยังคงได้รับข้อผิดพลาดเดียวกัน (ราวกับว่าการรับรองความถูกต้อง ) ข้อผิดพลาดเดียวกันเกิดขึ้นเมื่อดำเนินการจากสคริปต์ / bin / sh

ฉันจะสร้างคำสั่งเพื่อคลายการบีบอัดภาพไปยังอุปกรณ์ได้อย่างไร?

ฉันใช้ Ubuntu 14.04 LTS ในหน้าต่างเทอร์มินัล

คำตอบ:


18

คุณหายไปsudoในอีกด้านหนึ่งของไปป์ไลน์:

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

ใน<command> | <command> | [...]รูปแบบคำสั่งแต่ละคำสั่งของไพพ์ไลน์ที่ต้องการsudoควรรันโดยใช้sudoไม่ใช่เฉพาะคำสั่งแรก

ในกรณีนี้คุณอาจไม่จำเป็นต้องใช้sudoในgzip -dc sda1.image.gzเว้นแต่คุณจะไม่ได้รับสิทธิ์ในการอ่านที่ไฟล์:

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

โดยทั่วไปหากคำสั่งทั้งหมดที่จะเรียกใช้ในไปป์ไลน์ต้องใช้sudoวิธีหนึ่งในการเขียนsudoแต่ละคำสั่งคือการเรียกใช้คำสั่งทั้งหมดใน subshell ที่เรียกใช้โดยsudo:

sudo bash -c '<command> | <command> | [...]'

3
@KenConrad หากคำตอบนี้แก้ไขปัญหาของคุณได้โปรดทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับได้โดยคลิกที่เครื่องหมายภายใต้จำนวน upvotes เพื่อให้ผู้ใช้รายอื่นอาจรู้ว่าคำตอบนี้เหมาะกับคุณและอาจได้ประโยชน์จากมันเช่นกัน
kos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.