web-dev-qa-db-ja.com

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

動作しない

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

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

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

11
Ken Conrad

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

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

<command> | <command> | [...]コマンド形式では、Sudoを必要とするパイプラインの各コマンドは、最初のコマンドだけでなく、Sudoを使用して実行する必要があります。

この場合、ファイルの読み取り権限がない限り、gzip -dc sda1.image.gzSudoを使用する必要はないかもしれません。

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

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

Sudo bash -c '<command> | <command> | [...]'
11
kos