为什么rm在删除写保护文件时会发出警告?

Loc*_*ost 3 permissions directory chmod rm write

我有一个常规文件,我将其权限更改为444. 我知道由于文件受写保护,我们无法修改或删除文件的内容,但是当我尝试使用 删除此文件时rm,它会生成一个警告,说明我是否要删除写保护的文件。我的疑问是这不是取决于文件是否可以删除的目录权限?为什么rm即使目录具有写入和执行权限也会生成警告。是否可以删除文件还取决于文件权限吗?还是完全依赖于目录权限?

mos*_*svy 6

因为标准要求它:

3.如果file不是directory类型,-f没有指定option,或者file的权限不允许写,标准输入是终端,或者-i指定了option,rm 写提示到标准错误,读一个来自标准输入的行。如果响应不是肯定的, rm 将不对当前文件做任何更多的事情并继续处理任何剩余的文件。

所以a)这是rm实用程序特有的问题(它没有说明权限的一般工作方式)和b)您可以使用rm -f file或覆盖它true | rm file

而且,这是rm很长一段时间以来的行为——46 年,或者甚至更长

  • 那么这意味着删除文件完全取决于目录权限? (2认同)
  • 我喜欢(一些)标准。但是当一个问题是“为什么?”时,任何*仅*指一组任意规则的答案似乎是不完整的。例如:“你为什么不偷窃?” – '因为十诫之一。案件结案。但是任何规则背后通常都有一个基本原理,例如哲学家可以就偷窃进行辩论。在这种情况下,我想理由是:由于文件是只读的,所有者可能不想丢失存储在其中的任何数据,因此最好在我们删除整个文件之前询问。 (2认同)