我知道root 可以做任何事,但是有没有办法至少提醒 root 他们即将删除一个可能不应该删除的文件夹?
我们在文件夹中保留一个工作目录/tmp
,管理员会不时出现并使用/tmp
大致的sudo rm -rf *
.有没有办法给出诸如提示或警报之类的信息,表明他们将要删除特定文件夹?大致如下:
The folder XXXXX is protected from deletion - do you really want to delete this folder? (y/n)
我知道,最好的解决方案是将此文件夹移到其他地方(该/tmp
文件夹被称为 temp 毕竟是有原因的!),但这还有其他问题。因此我的问题。
问这个问题让我想知道,实际上盲目删除该文件夹的所有内容是不是一种不好的做法/tmp
?只删除超过一定期限的文件不是更好的方法吗?
答案1
移动您的工作文件夹是解决方案。你是对的,盲目地删除文件有点危险/tmp
——通常,它是在系统启动/关闭时或使用基于访问时间的删除程序(如tmpwatch
)来完成的。但根据它的定义,空间是不稳定的,否则不合理的期望是不合理的。
不过,如果您确实想防止这种情况发生,SE Linux 可以做到。您可以给该目录一个特定的标签,并对其进行配置,以便 root 通常没有取消链接权限对于带有该标签的对象。不过,这似乎比仅仅将目录移动到更好的共享位置要多得多的工作 - 而且由于它会导致 SE Linux 审核消息,而不是您想象的漂亮的“您确定 y/n”提示,所以看起来似乎是这样最终会造成令人沮丧的混乱。
答案2
您可以将目录的目录属性更改为不可变:
# cd /tmp
# mkdir undeletable
# chattr +i undeletable
# rm -rf undeletable/
rm: cannot remove `undeletable': Operation not permitted
不幸的是,由于该目录是不可变的,因此您也无法修改它:
# cd undeletable/
# touch foo
touch: cannot touch `foo': Permission denied
您可以拥有可变的子目录,但 rm -rf 仍会删除文件。因此,只有当您想要 /tmp 中的只读内容时,此解决方案才有效。
如果 /tmp 中必须有不可删除的 RW 内容,为什么不将其放在其他更永久的位置,并在 /tmp 中创建一个可以轻松恢复的符号链接。 (如果丢失的话也许会自动?)
答案3
chmod +t /tmp/perm_file