mv 在 / 上的行为是什么?

mv 在 / 上的行为是什么?

我们的一个用户意外地mv /* ../在没有 root 权限的情况下执行了此操作。在检查使用的效果后,diff我惊讶地发现,当应用于目录时,它mv显然可以正常工作。cp/

我的问题是:

  1. 这是该命令的标准行为吗mv
  2. 我还应该检查什么来确保系统没有受到损坏?

答案1

我猜测目标(../)位于内部某处,或者位于安装了/home/除文件系统之外的其他挂载点的另一个挂载点。/

  1. 这是该命令的标准行为吗mv

是的。如果文件在文件系统之间移动,则会进行复制,然后删除源文件,并调整副本所有权以镜像源文件。我猜是这种情况,但“删除”部分抛出了“权限被拒绝”错误,并且没有删除任何内容(或者几乎没有删除任何内容,我稍后会再讨论这个问题)。

如果移动应该在单个文件系统内进行,mv则尝试更新目录条目而不进行复制。当普通用户尝试在根文件系统内移动某些内容时,该过程通常会遇到“权限被拒绝”的情况,并且什么也不会发生。但在这种情况下,目标文件系统不同,如上所述。然而,mv在某个时候尝试移动/home/(或其他)挂载点它是文件系统,深入到树中../。此操作显然是不可能的,您无法将目录移动到其子目录中。这样,用户在同一个文件系统上的文件将../保持完整,尽管他或她可以../逐个移动它们。

唯一的我能想到的危险情况如下:如果用户可以删除文件系统上的任何文件和/或目录其他比在哪里../mv会像cp然后源文件和/或目录将被删除。您应该检查是否会发生这种情况以及严重程度。在这种情况下,可能需要将某些文件移回。如果用户是完全普通的用户,则不会发生这种情况。用户可能已将某些文件移走,/tmp/但可能并不严重。

  1. 我还应该检查什么来确保系统没有受到损坏?

我不这么认为。如果系统配置正确,普通用户无法对系统造成任何损害。好吧,在这种情况下,目标文件系统可能由于这些意外复制的文件而已满,但仅此而已。处理完上述危险情况后,删除副本和系统应该没事的。

我会做所有的清洁工作用户,而不是 root,即使其他人必须这样做(例如sudo -u user rm something)。这样做的目的是避免万一再次发生错误,系统会受到损坏。

相关内容