Ma commande qui ne fonctionne pas:
Sudo gzip -dc sda1.image.gz | dd of=/dev/sda1
renvoie l'erreur suivante avant même que j'aie eu la possibilité d'entrer mon mot de passe:
dd: failed to open ‘/dev/sda1’: Permission denied
[Sudo] password for ken:
J'ai aussi essayé sans les options "-dc" et j'obtiens la même erreur.
Cependant, la commande dd sans gzip, en utilisant un fichier non compressé, fonctionne:
Sudo dd if=sda1.image of=/dev/sda1
Il semble que le Sudo ne s’applique qu’à la première commande et non à la séquence complète des commandes. Si je reste dans la même session de terminal et répète la commande, je ne reçois pas le mot de passe Prompt (mon authentification semble persister) et pourtant je reçois toujours la même erreur (comme si mon authentification ne s'appliquait pas à l'opération d'écriture/dev ). La même erreur se produit lorsqu’elle est exécutée à partir d’un script/bin/sh.
Comment dois-je construire mes commandes pour décompresser mon image sur le périphérique?
J'utilise Ubuntu 14.04 LTS dans une fenêtre de terminal.
Sudo
vous manque dans l’autre côté du pipeline:
Sudo gzip -dc sda1.image.gz | Sudo dd of=/dev/sda1
Dans un format de commande <command> | <command> | [...]
, chaque commande du pipeline nécessitant Sudo
doit être exécutée à l'aide de Sudo
name__, et pas seulement la première.
Dans ce cas, vous n'aurez peut-être pas besoin d'utiliser Sudo
sur gzip -dc sda1.image.gz
, à moins que vous n'ayez pas le droit de lecture sur le fichier:
gzip -dc sda1.image.gz | Sudo dd of=/dev/sda1
En général, si toutes les commandes à exécuter dans un pipeline requièrent Sudo
name__, l’un des moyens permettant d’écrire Sudo
dans chaque commande consiste à exécuter la commande entière dans un sous-shell appelé à l'aide de Sudo
name__:
Sudo bash -c '<command> | <command> | [...]'