Erro, mesmo com sudo: “dd: falha ao abrir '/ dev / sda1': Permissão negada” (entrada dd canalizada do gzip)

6

Meu comando que não funciona :

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

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

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

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

No entanto, o comando dd sem gzip, usando um arquivo descompactado, funciona :

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

Parece que o sudo está se aplicando 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 obtenho o prompt de senha (minha autenticação parece persistir) e ainda assim recebo o mesmo erro (como se minha autenticação não estivesse se aplicando à 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.

    
por Ken Conrad 08.05.2015 / 06:38

1 resposta

5

Você está perdendo sudo no outro lado do pipeline:

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

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

Nesse caso, talvez você não precise usar sudo on gzip -dc sda1.image.gz , a menos que você 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 , é possível executar o comando inteiro em um subshell chamado sudo : p>

sudo bash -c '<command> | <command> | [...]'
    
por kos 08.05.2015 / 06:52