如何防止用户删除目录?

gas*_*ter 12 permissions files

我试过“chattr +i DIRNAME”,它很棒,但是在chattr之后我无法在DIR中创建文件。还有什么可以防止用户删除目录?

root@HOST ~] mkdir test
[root@HOST ~] chattr +i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
touch: cannot touch `sth': Permission denied
[root@HOST ~/test] cd ..
[root@HOST ~] chattr -i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
[root@HOST ~/test] 
Run Code Online (Sandbox Code Playgroud)

更新:只有目录删除很重要,所以我仍然需要删除里面的文件

小智 14

创建一个文件“.protected”并以root身份执行

chattr +i .protected
Run Code Online (Sandbox Code Playgroud)

然后您可以删除除此.protected目录之外的所有文件,因此任何其他用户都无法删除该目录。

  • 要删除它,请使用“chattr -i [filename]”删除不可变属性。 (2认同)

jip*_*pie 2

那么简单的 chown/chmod 有什么问题呢?:

cd /tmp
mkdir question
sudo chown root:root question
[sudo] password for user: 
chmod 777 ./question
touch sth
rm sth
cd ..
rm question -rf
rm: cannot remove `question': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

好吧,让我告诉你这有什么问题:question由于777权限的原因,每个用户都可以访问目录中的每个文件。最好是

  • 创建一个新组groupadd question
  • mkdir question
  • chown root:question ./question
  • chmod 770 ./question
  • 将必须有权访问文件的用户添加到新组:usermod -G group user

这里的重要技巧是该目录的所有者与尝试删除该目录的任何用户不同。

  • 它还取决于该目录所在的位置。如果问题组中的某人对包含问题目录的目录具有 rwx 权限,则可以将其删除。 (3认同)