Error, incluso con sudo: "dd: no se pudo abrir '/ dev / sda1': permiso denegado" (entrada dd canalizada desde gzip)

14

Mi comando que no funciona :

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

devuelve el siguiente error incluso antes de tener la oportunidad de ingresar mi contraseña:

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

También lo intenté sin las opciones "-dc" y obtengo el mismo error.

Sin embargo, el comando dd sin gzip, que usa un archivo sin comprimir, funciona :

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

Parece que el sudo solo se aplica al primer comando y no a toda la secuencia de comandos. Si permanezco en la misma sesión de terminal y repito el comando, no recibo el mensaje de contraseña (mi autenticación parece persistir) y aún así obtengo el mismo error (como si mi autenticación no se aplicara a la operación de escritura / dev ) El mismo error ocurre cuando se ejecuta desde un script / bin / sh.

¿Cómo debo construir mi (s) comando (s) para descomprimir mi imagen en el dispositivo?

Estoy usando Ubuntu 14.04 LTS en una ventana de terminal.

Ken Conrad
fuente

Respuestas:

17

Falta sudoen el otro lado de la tubería:

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

En un <command> | <command> | [...]formato de comando, cada comando de la tubería que se requiere sudodebe ejecutarse utilizando sudo, no solo el primero.

En este caso es posible que no tenga que utilizar sudoen gzip -dc sda1.image.gz, a menos que usted no tiene permiso de lectura en el archivo:

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

En general, si todos los comandos que se ejecutarán en una tubería lo requieren sudo, una forma de evitar tener que escribir sudoen cada comando es ejecutar todo el comando en una subshell invocada usando sudo:

sudo bash -c '<command> | <command> | [...]'
kos
fuente
3
@KenConrad Si esta respuesta resolvió su problema, márquela como la respuesta aceptada haciendo clic en la marca debajo del recuento de votos a favor, para que otros usuarios sepan que esta respuesta funcionó para usted y posiblemente también se beneficien de ella.
kos