我(和我的合作者)有一个包含约 160K 文件的目录树(其中大部分是由数据收集工具自动生成的)。
这些文件驻留在不断备份的系统中,因此,只要我们拥有在需要时从备份恢复所需的信息,我们就不太担心数据丢失或损坏。
我们更担心的是不经意的由于用户错误(尤其是有缺陷的用户编写的代码)导致数据丢失或损坏,因为这充其量意味着在检测到问题之前浪费工作。
因此,我们要使这些文件不可删除、不可修改。
不幸的是,我们都没有chattr
在该系统上使用的权限,这排除了应用于chattr +i
这些文件的可能性。
是否有其他不需要特殊权限的方法来近似chattr +i
?
这篇文章的其余部分描述了我们考虑过的几种可能性,以及它们的缺点。
一种可能性是 apply chmod -R a-w DATA
,我在DATA
其中用作相关目录树的根的简写。
作为第一个近似值,这很好,但它有点太过了,因为它呈现了我们偶尔需要执行的许多操作(例如,将多个子目录合并为一个)
第二种可能性是这样的
find DATA -type f -exec chmod a-w {} \;
这样更灵活一点,文件不能再修改,但仍然可以删除。
答案1
如果没有 ,你就无法做到这一点chattr
。
然而,你什么能要做的就是将您不想修改或删除的文件放在一个单独的目录中,使该目录不可写(例如chmod og-w DIR
)并将其中的文件设为只读(例如chmod 644 DIR/*
)
这个单独的目录一定不是用户具有写访问权限的任何目录的子目录,否则他们仍然可以删除该目录或更改其权限。