用户可以修改 root 拥有的文件。为什么?

问题描述 投票:0回答: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/

我的目的是防止用户重命名文件,但只要拥有权限,他就可以重命名。

我错过了什么?

linux file-permissions
3个回答
5
投票

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

重命名文件是在相关目录内(而不是文件本身)进行的操作。也许删除对该目录的写访问权限可能会有所帮助(但如果用户拥有该目录,他可以使用

chmod
再次更改该目录的这些权限)。另请阅读有关目录中粘性位的更多信息。

顺便说一句,用户还可以硬链接同一文件,即向其中添加新文件名。那么每个文件名都引用同一个文件。


2
投票

文件的权限阻止/允许访问文件。重命名文件并不涉及更改文件本身 - 重命名实际上是对目录的更改。

尝试将目录权限更改为:

dr-xr-xr-x

看看会发生什么。


0
投票

如果文件是由 root 创建的纯文本文件:

echo 'foo' > /tmp/file.txt

您的

ls -l
是:

-rw-r--r-- root root file.txt

但是在普通用户中,我可以使用

vim
保存或使用
:w!
命令来更改此设置,当发生这种情况时,文件权限将更改为:
sed

为什么会这样?

PS:我使用

Debian SID

© www.soinside.com 2019 - 2024. All rights reserved.