是否可以使用“写入”权限来编辑文件,但不能对其父目录进行编辑?

是否可以使用“写入”权限来编辑文件,但不能对其父目录进行编辑?

假设所有者/用户没有目录的写权限,但他对目录下的文件有写权限。这里的文件可以编辑吗?如果有,是否存在无法编辑文件的情况?

答案1

是的,该文件可以编辑。

对于目录而言,如果删除了目标(所有者/组/其他)目录的执行权限,则无法编辑该文件。

编辑:如果您希望所有者无法通过更改目录的权限来编辑文件(假设同一用户拥有该目录和文件),那么您可以简单地删除所有者对该目录的执行权限。例如,您可以将所有者的权限设置为rw-ie 6

答案2

正如其他答案所述:是的,可以编辑/修改该文件。并且,冒着吹毛求疵的风险,请允许我指出这个问题说

…他对[目录]下的文件具有[写权限]。

并做出半明显的评论,要以该词的传统含义编辑文件,用户还必须具有允许到文件,以获得其当前内容。如果没有读取权限,用户可以覆盖现有数据和/或在末尾添加(追加)数据,但他无法进行有用的编辑,例如修复拼写错误或插入文本。

我说“修改”是为了强调我们正在讨论一系列场景,包括我上面提到的场景(覆盖或追加)以及

  • 将文件数据复制出来(例如,复制到另一个目录中的文件),以某种方式对其进行操作,然后将其复制回来(覆盖文件),或者
  • 使用传统的文本编辑器,例如vi,(或者甚至是十六进制编辑器,如果适用),

特别是vi,在这种情况下编辑文件没有问题。我还没有测试过很多其他编辑器。我预计他们中的大多数(例如,,,emacs…… pico)也会很好。

但,

sed-i  sed_命令  文件名

不会起作用,因为sed -i起作用

  • 在同一目录中创建临时文件,
  • 将文本从原始文件复制到新(临时)文件,执行指定的sed_command(s)在这个过程中,
  • 删除原文件,然后
  • 将临时文件重命名为原始名称(并将chmod其匹配原始文件的原始模式)。

当目录被写保护时,这些操作将失败。 (我相信/怀疑其他一些编辑可能会有同样的行为,但我无法引用任何例子。)

因此,sed -i需要对该目录的写访问权限。当然,它还需要文件的读取权限。但是,双重扭曲的惊喜结局是: 它不需要对文件的写访问权限。毕竟,您不需要对文件进行写访问即可删除它;只需对目录进行写访问即可。

答案3

您不需要对该目录具有写权限,但x必须设置可执行位。

因此,考虑一个foo带有文件的目录bar。如果权限设置为

 drwx--x--x   foo
 -rw-rw-rw-   foo/bar

例如,只要x给出该位,任何人都可以进行写访问。甚至r不需要对目录进行读取访问。

相关内容