我尝试了“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]
更新:只有目录删除很重要,所以我仍然需要删除其中的文件
答案1
创建一个文件“.protected”并以 root 身份执行
chattr +i .protected
然后,您可以删除.protected
除此目录之外的所有文件,因此任何其他用户都无法删除该目录。
答案2
chattr +a
应该做这项工作。您可以在其中创建文件,但无法删除它们。
答案3
那么简单的 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
question
好吧,让我告诉你这有什么问题:由于权限的原因,每个用户都可以访问目录中的每个文件777
。最好是
- 创建一个新组
groupadd question
mkdir question
chown root:question ./question
chmod 770 ./question
- 将必须有权访问文件的用户添加到新组:
usermod -G group user
这里的重要技巧是该目录的所有者与尝试删除该目录的任何用户不同。