如何使现有目录(和子目录)突然只能由 ROOT 写入?

如何使现有目录(和子目录)突然只能由 ROOT 写入?

假设我有一个目录,位于:

  • /tmp/uploads/

里面有几个由不同用户之前创建的递归目录和文件。

所以现在,我突然如何使上面的目录成为只能由 root 写入

这意味着,现有的无论用户将突然无法写入(但只读)。那么只能root继续写下去了。


非常重要的是,我不能失去原来的所有权(谁拥有什么)里面的东西。


毕竟,这也意味着我出于安全原因尝试锁定目录。

谢谢。

答案1

使用属性:

chattr -R +i files

(作为 root)会将+i属性递归地添加到您的文件夹和文件中,这将防止任何更改。请注意,root 也将被锁定,您i每次都需要手动取消设置。所有权等将保持不变。

答案2

首先将用户和组更改为root

chown -R root:root /tmp/uploads

然后更改权限,以便只有 root 可以写入

chmod -R 755 /tmp/uploads

编辑:

如果您只需要恢复文件所有者,我会将您的文件和所有者保存在一个文件中(当然有更好的方法可以做到这一点,但这是我首先想到的)。在运行下一个命令之前,请确保 /tmp/old_file_owners 不存在:

for i in $(find /tmp/uploads);do ls -ld $i|awk -vf=$i '{if (NF==9) {print $3 ":" $4 " " f}}'>>/tmp/old_file_owners; done

当您想恢复文件的所有者时,只需执行以下操作

IFS=$'\n';for i in $(cat /tmp/old_file_owners);do chown $i;done

如果您想保留原始文件权限,则需要将更多信息存储在您的文件中,但您可以使用以前的信息作为参考并执行类似的操作。

相关内容