如何防止用户在Linux上提供写入权限时重命名文件

出于某些特殊目的,我想阻止Linux服务器的非root用户更改或重命名文件名。 但是,他们可以修改和写入文件的内容。 如何从命令行执行此操作。

在Unix和Linux SE上从这个答案引用Stephane Chazelas 。

要重命名文件,写入文件的权限无关紧要,重命名文件是对目录的更改,而不是文件。 这正在改变目录条目,使其具有指向该文件的不同名称。

所以你需要做的就是改变目录的权限。 例如:

chown root: . chmod 755 . 

这将阻止用户重命名文件,还可以创建或删除文件。 如果您仍然希望它们能够这样做,您可以改为使目录可写,但也可以设置t位。 使用该位设置,用户(不受限制的目录的所有者除外)只能删除或重命名他们拥有的文件。

 chown root:people-who-can-create-file-here . chmod 1775 . chown root:people-who-can-modify-the-files file1-that-must-not-be-rename ... chmod 664 file1-that-must-not-be-rename ... 

chmod +t [FILE]

它设置了粘性位 ,它完全符合您的描述。

编辑:嗯,更具体地说,它阻止其他用户重命名文件。 所以完全取决于你想要什么。