Erro, mesmo com sudo: "dd: falha ao abrir '/ dev / sda1': permissão negada" (entrada dd canalizada a partir do gzip)

14

Meu comando que não funciona :

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

retorna o seguinte erro antes mesmo de ter a chance de inserir minha senha:

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

Eu também tentei sem as opções "-dc" e obtive o mesmo erro.

No entanto, o comando dd sem gzip, usando um arquivo não compactado, funciona :

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

Parece que o sudo se aplica apenas ao primeiro comando e não a toda a sequência de comandos. Se eu permanecer na mesma sessão de terminal e repetir o comando, não recebo o prompt de senha (minha autenticação parece persistir) e ainda assim recebo o mesmo erro (como se minha autenticação não estivesse sendo aplicada à operação de gravação / dev ) O mesmo erro ocorre quando executado a partir de um script / bin / sh.

Como devo construir meu (s) comando (s) para descompactar minha imagem no dispositivo?

Estou usando o Ubuntu 14.04 LTS em uma janela de terminal.

Ken Conrad
fonte

Respostas:

17

Você está ausente sudono outro lado do pipeline:

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

Em um <command> | <command> | [...]formato de comando, cada comando do pipeline que requer sudodeve ser executado sudo, não apenas o primeiro.

Nesse caso, talvez você não precise usá sudo-lo gzip -dc sda1.image.gz, a menos que não tenha permissão de leitura no arquivo:

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

Em geral, se todos os comandos a serem executados em um pipeline exigirem sudo, uma maneira de ter que escrever sudoem cada comando é executar o comando inteiro em um subshell chamado usando sudo:

sudo bash -c '<command> | <command> | [...]'
kos
fonte
3
@KenConrad Se esta resposta resolveu seu problema, marque-a como resposta aceita clicando na marca abaixo da contagem de votos, para que outros usuários saibam que essa resposta funcionou para você e que também possam lucrar com ela.
kos