سؤال خطأ ، حتى مع sudo: "dd: فشل في فتح" / dev / sda1 ": تم رفض الإذن" (dd input piped from gzip)


أمري الذي لا يعمل:

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

إرجاع الخطأ التالي حتى قبل أن أتيحت لي الفرصة لإدخال كلمة المرور الخاصة بي:

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

لقد حاولت أيضا دون خيارات "-dc" والحصول على نفس الخطأ.

ومع ذلك ، فإن الأمر د بدون gzip ، يعمل ملف غير مضغوط:

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

يبدو أن sudo لا ينطبق إلا على الأمر الأول وليس على التسلسل الكامل للأوامر. إذا بقيت في الجلسة الطرفية نفسها وأعدت الأمر ، فلن أحصل على كلمة المرور (يبدو أن المصادقة الخاصة بي تستمر) ومع ذلك لا زلت أحصل على نفس الخطأ (كما لو أن المصادقة الخاصة بي لا تنطبق على عملية كتابة / dev ). يحدث نفس الخطأ عند تنفيذ البرنامج النصي / bin / sh.

كيف يمكنني إنشاء أمري (أوامر) لإلغاء ضغط صورتي على الجهاز؟

أستخدم Ubuntu 14.04 LTS في نافذة طرفية.


8
2018-05-08 04:38


الأصل




الأجوبة:


أنت مفقود 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> | [...]'

7
2018-05-08 04:52



نعم ، هذا كل شيء. يعمل الآن. - Ken Conrad
KenConrad إذا كانت هذه الإجابة تحل مشكلتك ، فيرجى وضع علامة عليها كإجابة مقبولة من خلال النقر فوق العلامة تحت عدد upvotes ، بحيث قد يعرف المستخدمون الآخرون أن هذه الإجابة تعمل من أجلك وربما تستفيد من ذلك أيضًا. - kos