即使使用sudo也会出现错误:“ dd:无法打开'/ dev / sda1':权限被拒绝”(从gzip传递dd输入)


15

我的命令不起作用

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

甚至在我没有机会输入密码之前,都会返回以下错误:

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

我也尝试过不使用“ -dc”选项,并得到相同的错误。

但是,使用未压缩文件的不带gzip的dd命令可以正常工作

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

似乎sudo仅适用于第一个命令,而不适用于整个命令序列。如果我仍在同一终端会话中并重复该命令,则不会得到密码提示(我的身份验证似乎仍然存在),但仍会收到相同的错误(好像我的身份验证不适用于/ dev写入操作) )。从/ bin / sh脚本执行时,会发生相同的错误。

我应该如何构造命令以将映像解压缩到设备上?

我在终端窗口中使用Ubuntu 14.04 LTS。

Answers:


18

sudo在管道的另一端失踪了:

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

<command> | <command> | [...]命令格式中,流水线中需要的每个命令都sudo应该使用sudo而不是第一个运行。

在这种情况下,您可能不需要使用sudoon gzip -dc sda1.image.gz,除非您对该文件没有读取权限:

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

通常,如果要在管道中运行的所有命令都需要sudo,则必须sudo在每个命令中编写的一种方法是在使用sudo以下命令调用的子外壳中运行整个命令:

sudo bash -c '<command> | <command> | [...]'

3
@KenConrad如果此答案解决了您的问题,请单击增加投票数下的标记,以将其标记为已接受的答案,以便其他用户可能知道此答案对您有用,并且也可能从中受益。
kos,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.