为什么 dd 不能防止在活动磁盘上写入?

kur*_*sus 6 permissions dd block-device disk

我经常使用 dd。我一直害怕有一天会犯错,例如在 sda(计算机磁盘)而不是 sdb(USB 磁盘)上写入,然后擦除我计算机上的所有内容。

我知道 dd 应该是一个高级用户工具,但对我来说,你基本上可以通过按错键来破坏整个计算机,这对我来说没有意义。

为什么没有一种安全措施来防止 dd 写入它从中获取命令的磁盘上?不知道怎么会有人故意这样做。

请注意,我自己没有尝试过这个,我只看过它,所以我可能是错的。

gol*_*cks 11

我知道 dd 应该是一个高级用户工具,但对我来说,你基本上可以通过按错键来破坏整个计算机,这对我来说没有意义。

考虑一下土木建筑中使用的电动工具的种类,以及做错一件小事可能会搞砸的事情。可以让这些事情更容易预防吗?可能,但平衡是在多大程度上使事故更可预防,使工具不太有用和/或更笨拙。

驾驶汽车是一个类似的类比,可能带来更可怕的后果,但人类一直都在设法这样做(实际上太多了)。当然,如果他们做得慢一点会更安全,但我们共同决定了哪些风险值得承担。同样,如果计算机dd不存在,它会更安全,但由于人们认为它的用处大于其风险,所以它确实存在。

为什么没有一种安全措施来防止 dd 写入它从中获取命令的磁盘上?

事实上是有的,因为默认情况下设备文件(例如/dev/sda1)需要超级用户权限才能写入。因此,除非您使用 asroot或 via工作,否则sudo您实际上无法使用dd.

这让我们明白为什么有关于以超级用户权限运行命令的所有警告。 这些警告非常普遍,我认为在没有看到它们的情况下最终很难运行 *nix 系统,有点像在没有注意到HARD HAT AREA标志的情况下进入施工区。

如果您没有理由进入施工区,请离开。如果这样做,请采取适当的安全预防措施。世界可能是一个危险的地方,有些地方比其他地方更危险。不要不假思索地行动。一定程度的安全确保不会发生任何坏事——所以你不必费心思考——意味着你也不能做太多事情。有时这是可取的,有时不是。

  • “UNIX 并非旨在阻止其用户做愚蠢的事情,因为这也会阻止他们做聪明的事情” (4认同)

小智 6

询问为什么 dd 命令不首先检查其目标是否包含已挂载的文件系统,然后提示确认或需要特殊标志是合理的。一个简单的答案是,它会破坏任何希望能够以这种方式使用 dd 的脚本,并且这些脚本不是为了处理交互式输入而设计的。例如,在挂载同一设备的分区时修改原始设备的分区表可能是合理的;你只需要小心只修改第一个扇区。

市面上有大量的 Linux 系统,不可能知道人们想出了什么样的疯狂设置。因此,dd 的维护者不太可能进行向后不兼容的更改,这会导致未知数量的环境出现问题。

  • 他们仍然可以添加一个像 `--check-before-writing` 这样的选项,如果默认禁用,它将完全向后兼容。 (2认同)