无需 root 身份即可更改文件所有者

无需 root 身份即可更改文件所有者

我假设我有一个具有 666 权限的日志文件,其所有者是 alice。因此用户“bob”可以通过以下方式更改其所有者:

cp log log.temp; rm log; mv log.temp log

那么我该如何解决这个风险呢?

答案1

正如 Andrey 上面所说,bob 只有在拥有包含该文件的目录的权限时才能按照你说的做。如果你想让 bob 访问但无法创建新文件,只需将目录权限更改为 xx5。

了解 UNIX 权限

从用户的角度来看,文件和文件夹的访问权限具有不同的含义。

对于文件

  • 读: 如果文件内容可以读取
  • 写:如果用户或进程可以写入文件(更改其内容)
  • 执行:如果文件可以执行

对于目录

  • 读:如果可以获取目录列表
  • 写:如果用户或进程可以以某种方式改变目录内容:则在目录中创建新文件或删除现有文件或重命名文件。
  • 执行:如果用户或进程可以访问该目录,即转到该目录(使其成为当前工作目录)

答案2

假设 OP 有充分的理由让 alice 和 bob 具有对日志目录的写权限,那么替代答案是。

chmod og+t directorypath

问题不在于用户可以读取日志文件,甚至不在于他们可以在同一目录中创建新文件,而是他们可以移动和删除现有的日志文件。

+t将目录中文件的移动和删除限制为仅限文件所有者(root 除外)。

这就是/tmp dir 的工作方式。

相关内容