假设所有者/用户没有目录的写权限,但他对目录下的文件有写权限。这里的文件可以编辑吗?如果有,是否存在无法编辑文件的情况?
答案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
不需要对目录进行读取访问。