用户可以修改属于root的文件。为什么?

3

我希望防止用户修改文件,但是使用标准权限似乎无法实现。

该文件名为file.jpg,位于文件夹2012/中。

文件详细信息:

-r--r--r-- 1 root root 10294 Feb 19  2013 file.jpg

文件夹详情:

drwxr-xr-x 2 charly charly 36864 Aug 27 15:38 2012/

我的意图是防止用户重命名文件,但是按照现有的权限,他仍然可以这样做。
我错过了什么?

1
用户是否属于任何特权“组”?此问题可能更适合SuperUser甚至ServerFault。 - SunSparc
不,用户只是普通用户。用户无法重命名或修改由root拥有的目录中的文件。 - Juan Pablo Barrios
你为什么想要防止文件重命名?修改文件意味着修改其中的一些数据(或元数据)(在其inode中)。你为什么问这个问题? - Basile Starynkevitch
该文件中有木马病毒,因此我将其重命名为file.jpg.trojan,并希望确保它无法被重命名回file.jpg,因为网站因此被列入黑名单。当然,我可以直接删除该文件或相信网站开发人员不会将其重命名回jpg,但我想知道如何实现这一点。 - Juan Pablo Barrios
谁拥有这个目录?文件权限控制着谁可以访问或更改内容,而不是谁可以更改名称。 - undefined
注意,这完全是离题的;它应该在[unix.se]上讨论。 - undefined
2个回答

5

在同一文件系统中重命名或移动文件时,不会更改文件本身,因为文件实际上是一个inode(在目录中可能有零个、一个或多个文件名)。

重命名文件是在相关目录内进行的操作(而不是在文件本身上)。也许取消对目录的写访问权限可能有所帮助(但如果用户拥有该目录,则可以使用 chmod 再次更改目录上的这些权限)。还可以阅读有关sticky bit在目录上的更多信息。

顺便说一下,用户还可以将同一文件创建硬链接,即向其添加新的文件名。然后每个文件名都指向同一文件。


谢谢。那么,如果用户需要添加或修改其他文件(因为用户需要这个目录的写入权限),您如何在不删除用户对目录的写入权限的情况下完成此操作?您能想到任何方法吗? - Juan Pablo Barrios

2
文件的权限控制访问文件的允许或禁止。重命名文件并不涉及更改文件本身,实际上是对目录进行更改。
尝试将目录权限更改为:
dr-xr-xr-x

并观察发生了什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接