sudoでもエラー:「dd: '/ dev / sda1'を開けませんでした:許可が拒否されました」(gzipからパイプされたdd入力)


14

動作しない私のコマンド:

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

パスワードを入力する前に、次のエラーを返します。

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

「-dc」オプションを使用せずに試したところ、同じエラーが発生しました。

ただし、非圧縮ファイルを使用するgzipなしのddコマンドは機能します。

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

sudoはコマンドのシーケンス全体ではなく、最初のコマンドにのみ適用されるようです。同じ端末セッションに残ってコマンドを繰り返した場合、パスワードプロンプトは表示されず(認証が持続するようです)、それでも同じエラーが表示されます(認証が/ dev書き込み操作に適用されていないかのように) )。/ bin / shスクリプトから実行すると、同じエラーが発生します。

イメージをデバイスに圧縮解除するためのコマンドを作成するにはどうすればよいですか?

ターミナルウィンドウでUbuntu 14.04 LTSを使用しています。

回答:


17

sudoパイプラインの反対側にありません:

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

<command> | <command> | [...]コマンドフォーマット、必要とパイプラインの各コマンドをsudo使用して実行されなければならないsudo、最初のものだけでなく。

この場合、ファイルの読み取り権限がない場合を除き、sudoon を使用する必要はありませんgzip -dc sda1.image.gz

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

一般に、パイプラインで実行するすべてのコマンドがrequire sudoである場合、sudo各コマンドで記述する必要がある1つの方法は、次のコマンドを使用して呼び出されるサブシェルでコマンド全体を実行することsudoです。

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

3
@KenConradこの回答で問題が解決した場合は、賛成票の下にあるマークをクリックして、受け入れられた回答としてマークしてください。他のユーザーがこの回答があなたのために働いていることを知り、それから利益を得ることもできます。
コス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.