为什么一个用户可以删除另一个用户的755个文件?

Mac*_*wic 36 linux security file-permissions

我有一个备份上传脚本,该脚本使用 user 将 scp 的文件传输到另一台服务器upload。目标服务器上的另一个脚本然后将这些脚本发送给另一个用户并将文件模式设置为755.

如果我然后使用upload用户SSH 进入目标服务器,我就可以删除 chowned 文件。它们不应该是只读的吗?

这是目标服务器上文件的样子,用户upload可以删除它。

-rwxr-xr-x 1 maciekish maciekish 650M Nov  1 01:07 2014-11-01-data.tar.bz2
Run Code Online (Sandbox Code Playgroud)

用户upload是刚刚添加使用的useradd,并且不是该maciekish组的一部分。

当尝试upload通过 ssh删除文件时,我收到了是否要删除“写保护的常规文件”的问题,我可以说Y并删除它。

use*_*686 64

文件只读的;但是,删除文件不会修改它,而只会修改父目录(它基本上是从目录列表中删除文件)——听起来您对该目录具有完全写入权限。

您可以设置该sticky位——也就是“限制删除”标志——这将阻止除所有者之外的任何人重命名或删除该目录中的文件(如/tmp)。为此,请chmod o+t *directory*以目录的所有者身份运行。


sup*_*cat 12

在典型的 Unix 文件系统中,任何文件都可以通过任意数量的目录条目来标识,每个目录条目都包含一个“硬链接”。

从实现的角度来看,删除文件的最后一个目录条目(硬链接)和简单地从许多引用中删除一个引用是有区别的。但是,从语义的角度来看,没有区别。

如果一个文件存在多个硬链接,使用其中任何一个写入文件都会改变所有这些硬链接看到的文件。rm但是,在链接上使用只会导致无法通过该链接访问该文件。该文件的其他链接将继续看到完全相同的文件。

  • 俗称硬链接。 (3认同)
  • 链接之间没有区别。创建文件A,创建硬链接B,删除文件A。B现在是文件还是硬链接?为了理解它是如何工作的,最好将其视为 N 个硬链接,而不是 1 个文件和 (N-1) 个硬链接。还有打开文件时存在的链接。 (3认同)
  • @supercat 这不是很常见,但它是正确的。考虑`struct stat`中的`st_nlink`(“硬链接数”)字段。简而言之,目录持有文件的硬链接。 (2认同)